我在 JavaScript 中创建了一个 for 循环,如下所示:
for (var i = 0; i < element[child].length; i++) {
...some code...
}
但是,当我在其上运行 JSLint 时,它抱怨应该将 'var i' 移到函数的开头(这对我来说似乎很奇怪),并且它还抱怨 'i++' 上的 ++ 是意外的。这部分我真的觉得很奇怪——为什么 ++ 出乎意料,应该用什么代替?
我在 JavaScript 中创建了一个 for 循环,如下所示:
for (var i = 0; i < element[child].length; i++) {
...some code...
}
但是,当我在其上运行 JSLint 时,它抱怨应该将 'var i' 移到函数的开头(这对我来说似乎很奇怪),并且它还抱怨 'i++' 上的 ++ 是意外的。这部分我真的觉得很奇怪——为什么 ++ 出乎意料,应该用什么代替?
变量应该在函数的顶部声明,因为这就是 JavaScript 最终要做的事情(它被称为“变量提升”),所以 JSLint 认为将它们始终放在那里是很清楚的。
对于i++
,它要你用i += 1
。来自JSLint 文档:
众所周知,++(递增)和 --(递减)运算符会通过鼓励过多的技巧来导致糟糕的代码。它们在启用病毒和其他安全威胁方面仅次于错误的架构。此外,前增量/后增量混淆会产生非常难以诊断的错误。有一个 plusplus 选项允许使用这些运算符。
简而言之,JSLint 认为它是邪恶的,这是有争议的。另见:http: //jslinterrors.com/unexpected-plus-plus/
老实说,我认为您的代码很好,问题更多在于 JSLint 过于挑剔。当我通过 JSHint 运行您的代码时,我没有遇到任何问题: http: //www.jshint.com/
请记住,即使某些东西仍然可以正常工作,JSLint 通常也会非常挑剔。你只需要知道什么时候接受它的建议,什么时候忽略它:)
就是说要搬出var i
去。它应该是这样的:
function foo() {
"use strict";
var i, element, child;
//...set element/child...
for (i = 0; i < element[child].length; i += 1) {
//...some code...
}
}
这里有一篇很好的文章涵盖了这个++
主题:为什么要避免 JavaScript 中的递增(“++”)和递减(“--”)运算符?