如图所示
可以先把要循环的数组保存起来就行了
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
10 回答10.8k 阅读
7 回答11k 阅读
6 回答2.7k 阅读
2 回答11.5k 阅读✓ 已解决
5 回答4.5k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
循环中,尤其是以数组长度作为循环条件的,一定要小心一个陷阱,就是循环过程中对数组进行增删操作,很容易导致死循环或者执行次数不足,因为判断条件(数组长度)一直在变,所以不要在循环里对条件数组进行操作,或者不要以要被操作的数组长度做判断条件。