【问题标题】:jslint stops at $(document).ready linejslint 停在 $(document).ready 行
【发布时间】:2012-07-28 16:31:34
【问题描述】:

我遇到了 JSLint 的问题,它提供了一个难以理解的错误:

我正在尝试分析以下结构的代码:

<script type="text/javascript">
    var MyGlobalObj = MyGlobalObj || {}; //used for creating namespace security

    MyGlobalObj.MyFunction = function () {
        //valid javascript
    }

    $(document).ready(function () {
        //Stuff I want analyzed
    });
</script>

我在我的代码中混合使用了 javascript 和 jQuery。但是,JSLint 声称,与准备好的操作一致,即:

Unexpected '$'.
        $(document).ready(function() {

对不起,但是……什么?为什么会出乎意料?什么是“正确”的实现方式?

Options I am using:
    /*jslint white: true, browser: true, devel: true */
Entry in the predef box:
    $

注意:在其他地方,我根据需要声明 $(variable) 没有问题。就这么一行。

【问题讨论】:

  • jQuery JavaScript,你不能混合使用它;) $(document).ready(...) 之前的行是什么?如果有一个“意外的东西”,那么由于之前的东西,这个符号不是预期的。
  • @FelixKling 你说话的时候混合了英语和诗歌~
  • @TheZ Poetry 本身不是语言,就像 jQuery 不是语言一样。
  • @Ibu 开个玩笑,没有语言,诗歌就无法生存。语言是它的媒介,也是它的实质。语言是交流,诗歌是应用交流。 Jabberwocky 什么都没教过你吗? xD
  • @FelixKling 谢谢。我带着你的 cmets 回顾了代码,发现 JSLint 期望在 $ 符号之前的花括号上有一个分号。我已经更新了这个问题并提供了一个答案来更好地解释为什么会遇到这个错误。 JSLint 现在对我的代码很满意 :)

标签: javascript jquery jslint


【解决方案1】:

这是该代码的 JSLint 验证版本。

  1. 添加分号
  2. 使用严格

    /*全局 $, 文档 */

    “使用严格”;

    var MyGlobalObj = MyGlobalObj || {}; //用于创建命名空间安全

    MyGlobalObj.MyFunction = function () { // 有效的javascript };

    $(document).ready(function () { // 我要分析的东西 });

【讨论】:

    【解决方案2】:

    发生了意外的 JSLint 优先级冲突以产生此错误。

    根据关于分号的 JSLint 文档:

    JSLint 期望每个语句后跟;,除了 forfunctionifswitchtrywhile。 JSLint 不期望 查看不必要的分号或空语句。

    为了提供命名空间保护,我根据此处找到的教程实现了命名空间:

    http://elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces/

    但是,当将新变量分配给命名对象时,JSLint(显然是标准约定)认为代码

    Obj.Method = function (TheArgs) { /*do stuff*/ };
    

    后面应该跟一个分号,不管使用 function 关键字。这源于赋值运算符对分号的要求,以取代函数关键字省略分号。

    感谢 Felix Kling 指出“意外”表示意外行之前的代码没有正确结束。

    【讨论】:

    • 赋值语句应始终以分号结束 :) 在这种情况下,function() {...} 不是语句而是表达式(因为它位于右侧的分配),所以你引用的例外在这里不适用。
    猜你喜欢
    • 2014-04-20
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多