JSLint 错误的解决方案

Posted

技术标签:

【中文标题】JSLint 错误的解决方案【英文标题】:Solution for JSLint errors 【发布时间】:2010-11-29 20:38:05 【问题描述】:

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

第 92 行字符 7 处的问题:将调用移动到包含函数的括号中。)();

第 92 行字符 7 处的问题:将整个立即函数调用包装在括号中。)();

如何修复此错误?

【问题讨论】:

如果我们知道第 92 行的内容(至少)会有帮助。 只是想在黑暗中刺一下,猜是)(); ;-) 【参考方案1】:

我相信这意味着您应该将函数调用括号移动到包装括号内

(function()  /* code */ )() 

执行该函数的最后两个括号是问题所在。这就是 jslint 想要的样子:

(function()  /* code */ ()) 

【讨论】:

这很奇怪。约定通常是在最后一次调用括号之前包装所有内容 - (function())() 嗯,从什么时候开始 jslint 完全有意义了? ;) 就我个人而言,我只是忽略了没有意义的规则,比如这个。 “从什么时候开始 jslint 完全有意义?”,我知道这是开玩笑的,但是 crockford 放在那里的每条规则都有一些冗长的理由。你可以说许多规则不是很重要,但至少这些规则有一个可靠的理由。【参考方案2】:

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

第一组括号(围绕“function()”)不是必需的,但用于使函数立即被调用很明显,从而使表达式不一定返回该函数很明显;而是该函数的返回值

【讨论】:

这很有意义,尤其是当它是一个大函数时。它使正在发生的事情变得非常明显 - 在阅读其他人编写的代码时有所帮助,或者在 3 个月不查看代码后您自己的代码有所帮助。毕竟,阅读代码的频率远高于编写代码的频率。 实际上,如果'function'标记是行的第一件事,它是必需的。否则会出现语法错误,因为它被视为函数声明,而不是表达式。 这篇文章发布已经两年多了,但我觉得应该指出,如果你点击链接,你会发现上面引用中描述的代码在抛出 JSLint 警告的方式,例如(函数() )(); 这个有忽略设置吗?

以上是关于JSLint 错误的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 JSLint 警告“不要使用 'new' 产生副作用”?

JSLint 错误:将所有“var”声明移动到函数顶部

如何使用 jenkins 中的 jslint 和违规插件查找特定错误?

崇高文本中的 JsLint 2

JSLint 和 ESLint 问题(括号)

JSLint4Java 用法