```
//forEah 不支持return
arr.forEach((item)=>{ // 声明式 (不关心如何实现)
// console.log(item);
})
json.forEach(function(v,k){ //不能遍历对象json,只支持数组和类数组
console.log(k,v); //报错
})
```
```
//in 支持对象和数组
for(let key in arr){ //key会把数字的索引变成字符串作为键名
// console.log(typeof key);
// console.log(key); //能打印出数组的自定义属性
}
//of 仅支持数组
for(let val of arr){ //支持return 并且是值of数组 不能遍历对象
// console.log(val);
}
//让of支持对象
for(let val of Object.keys(obj)){
console.log(obj[val]);
}
```
## for中let和var的区别
![](https://box.kancloud.cn/4d2d518bd55af721cac2ba97b1ca74f2_355x308.png)