for of 和 for in,for each的区别
for each
使用for each遍历数组的话,使用break不能中断循环,使用return也不能返回到外层函数。
for in
-
index索引为字符串数字型,不能直接进行几何运算
-
遍历顺序有可能不是按照实际数组的内部顺序
-
使用for in会遍历数组所有的可枚举属性,包括原型。例如上栗的原型方法method和name属性
所以for in更适合遍历对象, 通常用for in来遍历对象的键名 不要使用for in遍历数组 -
记住,for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值。
let t = 'KFJEOARORJEFGPJFDAS';
for(let i in t) {
console.log(t[i]);
}
for of
适用于遍历数/数组对象/字符串/map/set等拥有迭代器对象的集合,但是不能遍历对象,因为没有迭代器对象
与for Each()不同的是,它可以正确响应break、continue和return语句
//严重推荐使用for ....of解构进行迭代数据
for(let i of t) {
console.log(i);
}