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

我怎样才能使这段代码jsLint快乐?

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

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

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

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

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

当要立即调用函数时,整个调用表达式应该包含在parens中,以便很明显生成的值是函数的结果而不是函数本身。

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

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

不要被那些抱怨道格拉斯·克罗克福德的观点与JSLint分开的人抱怨。 他们是对的,这很好!

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

(领先的分号,我看你要去哪里 – 防守很好。但是如果每个人都使用JSLint ……我仍然感觉到你的痛苦。)