循环声明的jsLint

时间:2015-08-02 11:17:51

标签: javascript jslint

根据jsLint,建议以下列方式声明for循环:

for(var i = 0, length = data.length; i < length; i+=1){...}

在此上下文中i++i+=1之间有什么区别?

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

在这种情况下没有功能差异。但是++--可能会导致错误,因为它会使代码复杂化并导致逐个错误(前增量和后增量混淆)。因此,JSLint建议不要使用此构造。

JSLint没有告诉你你的代码在功能上是错误的,它指出还有另一种方法可以编写代码来避免常见的陷阱。

实际上,最新版本的JSLint会建议完全不使用for,因为应该首选forEachmap等数组实例方法(显然有一个标志)必要时关掉它。)

JSLint instructions中解释了此建议和其他建议。

答案 1 :(得分:2)

绝对没有区别。但是如果你使用i++,你将保存一个字节。如果你跳过声明length,你会节省更多。

所以..我不明白为什么你会这样使用它。以下是我一直这样做的方法:

for (var i = 0; i < arr.length; i++) {
    ...
}

关于在此处保存字节的主题,如果您的循环如下所示:

for (var i = 0; i < arr.length; i++) {
    var e = arr[i];
}

你也可以这样做:

for (var i = 0; i < arr.length;) {
    var e = arr[i++];
}

你也可以这样做:

arr.forEach(function(e) {
    // ...
});

这假设您不需要使用e索引。