【问题标题】:Don't make functions within a loop. - jslint error不要在循环中创建函数。 - jslint 错误
【发布时间】:2011-10-15 11:59:38
【问题描述】:

我收到这个 jslint 错误

不要在循环中创建函数。

我无法更改导致此问题的 javascript - 但是由于修改它的限制,我无法更改。

所以,我想关闭此验证以在特定的 javascript 文件中检查此错误。

这个js错误可以这样做吗?

【问题讨论】:

  • 您在标题中说“jslint”,但在问题正文中说“jslint”。是哪个?
  • 为什么必须在循环中创建函数?你能告诉我们你正在使用的代码吗?

标签: javascript jquery jslint jshint


【解决方案1】:

不,验证检查不是可选的。

一种可能的解决方法:

// simple closure scoping i to the function.
for(var i = 0; i < 10; i++) {
    (function (index) {
         console.log(index);
     }(i));
}
// this works, however it's difficult to site read and not a blast to debug

解决方案:

// same exact output
function logger(index) {
    console.log(index);
}

// same output. Minus declaring all vars at the
// top of the function and console this passes jslint.
for(var i = 0; i < 10; i++) {
    logger(i);
}

【讨论】:

  • 但是这样做没有非常有效的案例吗?喜欢关闭当前循环值以创建一堆回调函数?
  • JSLint 并不是 javasript 的全部。这是一个非常好的指南。在某些情况下,甚至需要使用最邪恶的 javascript 函数,例如 eval。