我在JavaScript中创建了一个for循环,如下所示:
for (var i = 0; i < element[child].length; i++) {
...some code...
}
然而,当我在其上运行JSLint时,它抱怨'var i'应该移动到函数的开头(这对我来说似乎很奇怪)并且它还抱怨'i ++'上的++出乎意料。正是这部分我真的觉得很奇怪 - 为什么++出乎意料,应该用什么代替呢?
答案 0 :(得分:1)
变量应该在函数的顶部声明,因为这就是JavaScript最终做的事情(它被称为“变量提升”),所以JSLint认为总是将它们放在那里很清楚。
关于i++
,它希望您使用i += 1
。来自JSLint docs:
已知++(增量)和 - (减量)运算符通过鼓励过多的特技来导致错误的代码。它们仅次于故障架构,可以实现病毒和其他安全威胁。此外,增加前/后增量混淆可以产生非常难以诊断的一个一个错误。有一个plusplus选项允许使用这些运算符。
简而言之,JSLint认为它是邪恶的,这是有争议的。另见:http://jslinterrors.com/unexpected-plus-plus/
答案 1 :(得分:0)
说要移出var i
。它应该是这样的:
function foo() {
"use strict";
var i, element, child;
//...set element/child...
for (i = 0; i < element[child].length; i += 1) {
//...some code...
}
}
这里有一篇很好的帖子涵盖了++
主题:Why avoid increment ("++") and decrement ("--") operators in JavaScript?
答案 2 :(得分:0)
老实说,我认为你的代码很好,问题更多的是JSLint过于挑剔。当我通过JSHint运行代码时,我没有遇到任何问题: http://www.jshint.com/
请记住,即使某些内容仍能正常运行,JSLint也会非常挑剔。你只需知道何时采纳它的建议以及何时忽略它:)