【问题标题】:JSLint error: Move the invocation into the parens that contain the functionJSLint 错误:将调用移动到包含函数的括号中
【发布时间】:2014-10-17 22:00:10
【问题描述】:

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

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

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

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

【问题讨论】:

  • 不,没有区别。 JSLint 对编码风格可能过于挑剔,这就是其中一种情况。将函数调用括号放在围绕括号的函数中对该代码的影响为零。使用 JSLint(以及其他)时,我总是关闭此设置
  • 如何在 JSLint 中关闭此检查?
  • 函数前还有防御性分号,我如何使用 lint 将其关闭?还有
  • 啊,对了,我忘了它不允许你关闭那个设置。这些都是 jslint 过于固执己见的情况。我会推荐 jshint.com。

标签: jquery jslint jshint


【解决方案1】:

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

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

当一个函数被立即调用时,整个调用 表达式应该用括号括起来,以便清楚地表明 产生的价值是函数的结果,而不是 函数本身。

稍微扩展一下,正如我们所知,JavaScript 并不是一种强类型语言。将 function 推送到变量中并不少见,事实上,将函数推送到 var 可能比立即调用的匿名函数中的值更常见。

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

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

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

(前面的分号,我知道你要去哪里了——防守很好。但是如果每个人都使用 JSLint...我仍然感觉到你的痛苦。)

【讨论】:

    猜你喜欢
    • 2011-06-26
    • 2011-11-26
    • 2020-02-04
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多