1.for in
for...in 循环主要是为了遍历对象而生,不适用于遍历数组
只能获得对象的键名,不能获得键值
可以使用 for...in 循环遍历键名(也可以使用 Object.keys(obj) 方法将对象的键名生成一个数组,然后遍历这个数组)
for...in 循环不仅遍历数字键名,还会遍历手动添加的其它键,甚至包括原型链上的键
let arr = [1, 2, 3] arr.set = 'world' // 手动添加的键 Array.prototype.name = 'hello' // 原型链上的键 for(let item in arr) { console.log('item', item) } /* item 0 item 1 item 2 item set item name */
2.for of
for...of 循环可以用来遍历数组、类数组对象,字符串、Set、Map 以及 Generator 对象
对于普通对象,没有部署原生的 iterator 接口,直接使用 for...of 会报错
3.forEach
forEach 循环无法中途跳出,break 命令或 return 命令都不能奏效
(break、continue、return的区别 break:结束当前的循环(比如for、while) continue:跳出本次循环,继续执行下次循环 return:不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的)