根据jsLint,建议以下列方式声明for循环:
for(var i = 0, length = data.length; i < length; i+=1){...}
在此上下文中i++
和i+=1
之间有什么区别?
任何帮助将不胜感激!
答案 0 :(得分:3)
在这种情况下没有功能差异。但是++
和--
可能会导致错误,因为它会使代码复杂化并导致逐个错误(前增量和后增量混淆)。因此,JSLint建议不要使用此构造。
JSLint没有告诉你你的代码在功能上是错误的,它指出还有另一种方法可以编写代码来避免常见的陷阱。
实际上,最新版本的JSLint会建议完全不使用for
,因为应该首选forEach
和map
等数组实例方法(显然有一个标志)必要时关掉它。)
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
索引。