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' 产生副作用”?