for循环的JSLint建议

时间:2013-10-15 16:30:44

标签: javascript jslint

我在JavaScript中创建了一个for循环,如下所示:

for (var i = 0; i < element[child].length; i++) {
    ...some code...
}

然而,当我在其上运行JSLint时,它抱怨'var i'应该移动到函数的开头(这对我来说似乎很奇怪)并且它还抱怨'i ++'上的++出乎意料。正是这部分我真的觉得很奇怪 - 为什么++出乎意料,应该用什么代替呢?

3 个答案:

答案 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也会非常挑剔。你只需知道何时采纳它的建议以及何时忽略它:)