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

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

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

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

如何修复此错误?

【问题讨论】:

  • 如果我们知道第 92 行的内容(至少)会有帮助。
  • 只是想在黑暗中刺一下,猜是})(); ;-)

标签: javascript jslint


【解决方案1】:

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

(function() { /* code */ })() 

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

(function() { /* code */ }()) 

【讨论】:

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

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

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

【讨论】:

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