如图所示
可以先把要循环的数组保存起来就行了
for (var i = 0, len = orders.length; i < len; i ++) {
// ...
};
这样只获取了一次最初的orders.length的值,还提高了性能
因为var不受块级作用域约束,线程是没有等待异步的。用let在块级域中是等待执行的。所以
for (let i = 0; i < 5; i++) {
setTimeout(() => {
console.log(i);
}, 100);
//0 1 2 3 4
6 回答5.5k 阅读✓ 已解决
9 回答9.6k 阅读
5 回答3.8k 阅读✓ 已解决
4 回答8.2k 阅读✓ 已解决
7 回答10.2k 阅读
5 回答8.4k 阅读
2 回答10.5k 阅读✓ 已解决
循环中,尤其是以数组长度作为循环条件的,一定要小心一个陷阱,就是循环过程中对数组进行增删操作,很容易导致死循环或者执行次数不足,因为判断条件(数组长度)一直在变,所以不要在循环里对条件数组进行操作,或者不要以要被操作的数组长度做判断条件。