解决JSLint错误

31 javascript jslint

我已经开始使用JSLint了.我检查了我的代码,我收到了这个错误:

第92行的问题字符7:将调用移动到包含该函数的parens中.
})();

第92行的问题字符7:在parens中包装整个立即函数调用.
})();

如何修复此错误?

Jan*_*nen 59

我相信这意味着你应该在包装parens中移动调用parens的函数

(function() { /* code */ })() 
Run Code Online (Sandbox Code Playgroud)

执行该功能的最后两个问题是问题所在.这就是jslint想要它的样子:

(function() { /* code */ }()) 
Run Code Online (Sandbox Code Playgroud)

  • "从什么时候开始,jslint完全有意义?",我知道这是在开玩笑,但是crockford在那里提出的每条规则都有一些冗长的理由.你可以说很多规则都不是很重要,但规则至少有充分的理由. (14认同)
  • 真奇怪.约定通常是在最后一次调用parens之前包装所有内容 - `(function(){})()`. (10认同)
  • 好吧,从什么时候开始jslint完全有道理?;)我个人只是忽略那些没有意义的规则,比如这个. (4认同)

Rob*_*Rob 35

我在这里找到了一个很好的解释:http://james.padolsey.com/javascript/closures-in-javascript/

第一组括号(在" function(){}" 周围)不是必需的,但是用于表明函数立即被调用,因此很明显表达式不一定返回该函数; 而是该函数的返回值

  • 自发布以来已经过去了两年多,但我觉得应该指出,如果你按照链接进行操作,你会发现上面引用的代码在抛出JSLint警告的方式中使用了括号,例如: (function(){})(); (4认同)
  • 实际上,如果'function'令牌是第一件事就是必需的.否则会出现语法错误,因为它被视为函数声明而不是表达式. (3认同)