jslint停在$(document).ready行

时间:2012-07-30 23:28:14

标签: javascript jquery jslint

我遇到了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() {

对不起,但......什么?为什么会出乎意料?什么是&#34;正确&#34;执行?

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

注意:在其他地方,我根据需要声明$(变量)没有问题。它只是一行。

2 个答案:

答案 0 :(得分:0)

出现意外的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指出“意外”表示紧接意外行之前的代码没有正确结束。

答案 1 :(得分:0)

这是该代码的JSLint版本。

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

    / * global $,document * /

    “use strict”;

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

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

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