JSLint错误:将调用移动到包含该函数的parens中

时间:2014-08-24 17:18:28

标签: jquery jslint jshint

如何使这段代码jsLint快乐?

;(function ( $, window, document, undefined ) {
  //some code 
})( jQuery, window, document );

它建议我这样写吗?会有什么不同吗?我该怎么办?

(function ( $, window, document, undefined ) {
  //some code 
}( jQuery, window, document ));

1 个答案:

答案 0 :(得分:2)

我正在从JSLint堆栈中的下一个问题复制我的答案。这就是为什么克罗克福德说第二种方式更好的原因。

来自http://javascript.crockford.com/code.html

  

当要立即调用函数时,整个调用   表达应该用parens包裹,以便明确表示   产生的价值是功能的结果,而不是   功能本身。

为了扩展一点,JavaScript并不是我们所知道的强类型语言。将function推入变量并不罕见,事实上,将函数推送到var比将来自立即调用的匿名函数的值推送更为常见。

因此,在您的代码中使用一点语法糖来表示何时调用而不是设置对函数的引用是值得的。

不要让那些抱怨无法将Douglas Crockford的意见与JSLint分开的人陷入困境。他们是对的,这很好!

在一个足够大的项目中,你为什么 不同意他?我从来没有见过克罗克福德需要客观上错误的东西。 JSLint中的所有规则都是可以说是好的规则,共享项目中代码的标准化通常是非常好的。他免费教你好(!坏?)的习惯。值得一玩。

(领先的分号,我看到你要去的地方 - 防守是好的。但如果每个人都使用JSLint ......我仍然感觉到你的痛苦。)