for in
遍历对象
,循环的变量是属性值
遍历数组
,循环的变量是索引值
注意:遍历对象时,for in 中不支持 if语句和break,遍历数组都支持
for (let key in arr) {
// 1 arr是对象
console.log('对象arr中属性' + key + '对应的值是' + JSON.stringify(arr[key]))
}
for (let index in arr) {
// 2 arr是数组 key是索引
// console.log('数组arr中索引' + index + '对应的元素是' + JSON.stringify(arr[index]));
}
for of
for of只能遍历数组。循环的变量是数组元素
for of遍历对象报错。temp is not iterable
for (let item of arr) {
console.log('元素是 ' + item)
}
不同点
1 for in 遍历对象
,循环的变量是属性值
。for of 遍历对象报错。xxx is not iterable
2 for in 遍历数组
,循环的变量是索引值
。for of 只能遍历数组。循环的变量是数组元素
。
相同点
1 都支持break, return
无聊的冷知识
1 for in遍历的同时,通过splice根据索引值移除某个元素,和普通的for循环一样,会少一次循环
2 for in 遍历数组,循环变量是字符串。但是,可以把它当成数字使用。