0

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

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

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

4

3 回答 3

1

变量应该在函数的顶部声明,因为这就是 JavaScript 最终要做的事情(它被称为“变量提升”),所以 JSLint 认为将它们始终放在那里是很清楚的。

对于i++,它要你用i += 1。来自JSLint 文档

众所周知,++(递增)和 --(递减)运算符会通过鼓励过多的技巧来导致糟糕的代码。它们在启用病毒和其他安全威胁方面仅次于错误的架构。此外,前增量/后增量混淆会产生非常难以诊断的错误。有一个 plusplus 选项允许使用这些运算符。

简而言之,JSLint 认为它是邪恶的,这是有争议的。另见:http: //jslinterrors.com/unexpected-plus-plus/

于 2013-10-15T16:33:40.653 回答
0

老实说,我认为您的代码很好,问题更多在于 JSLint 过于挑剔。当我通过 JSHint 运行您的代码时,我没有遇到任何问题: http: //www.jshint.com/

请记住,即使某些东西仍然可以正常工作,JSLint 通常也会非常挑剔。你只需要知道什么时候接受它的建议,什么时候忽略它:)

于 2013-10-15T16:36:57.330 回答
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...
    }
}

这里有一篇很好的文章涵盖了这个++主题:为什么要避免 JavaScript 中的递增(“++”)和递减(“--”)运算符?

于 2013-10-15T16:33:14.243 回答