You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
JavaScript 中并没有类似 java 的块级作用域,for 循环内部定义的变量会直接暴露在外(如 i,循环退出后,i 变量将等于数组长度,后续代码将能访问到 i 变量的值),因此建议将 for 循环置于闭包内或者使用 ES6 中的 let 来申明 i。特别要注意的是:如果在循环内部,前一个元素的遍历有可能影响到后一个元素的遍历,那么 for 循环内部方法也需要置于闭包之内
constarray=['a','b','c'];for(vari=0;i<array.length;i++){setTimeout(()=>console.log(i,array[i]),0);}// 会打印3个 3, undefinded// 而用 let 来申明 i 或者将内部用闭包包裹一下则会得到正确结果
for 循环
continue
跳过循环,break
终结循环forEach
forEach 回调 function 默认有三个参数:item、index、array。
for in
continue
和break
。for...in 语句以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。每次迭代时,分配的是属性名
for of (ES6)
for in 和 for of 的区别
除了迭代时分配的一个是属性名、一个是属性值外,for in 和 for of 还有其他不同 (MDN文档: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/for...of)
效率
for 循环应该是底层优化过的,因此也是最推荐使用的。但是 forEach、map,或者ES6 新增的一些数组方法增强了代码的可读性,也使得更简洁,对于没有很高性能要求的一般数组更推荐使用。
参考文档
The text was updated successfully, but these errors were encountered: