前言
博主想成为一个前端工程师,正在学校疯狂肝路。这是博主第一次写技术博客,会分享一些自己在学习过程遇到觉得有意思的技术点,欢迎大家留言评论,同时也希望大家进行评论指导,如果出现有错误的理解,也希望大家指正,大家一起学习。
在ES6之前,for in就已经存在了,for of是ES6里新增的特性,主要就是对for in的补充。废话不多说,下面来看看它们的情况。
正文
数组
const arr = [2, 3, 5, 4, 5, 2, 1];
arr.name=5 自定义属性
for(let i in arr){
console.log(i+':'+arr[i]) //打印出来的是下标 0,1,2,3,4,5,6,name
console.log(arr[i]) //可以打印出数组的值 2, 3, 5, 4, 5, 2, 1, 5
}
主要作用遍历数组
for(let i of arr){
console.log(i) //打印出来的是value 2, 3, 5, 4, 5, 2, 1
}
for-in数组遍历的是索引(键名),会遍历自定义的属性
for-of数组遍历的是值,并且不会遍历自定义属性
对象
const obj={
'a':1,
'b':2,
'c':3
}
主要作用遍历对象
for(let i in obj){
console.log(i) //打印的是属性名a b c
console.log(obj[i]) //打印的是值
}
for(let i of obj){
console.log(i) //obj is not iterable 报错 for-of无法遍历对象
}
console.log(Object.keys) //是游览器对象里的属性
如果要遍历对象,需要用到Object.keys
for(let i of Object.keys(obj)){
console.log(obj[i])
}
for-in遍历对象是遍历属性名
for-of不适合遍历对象,如果要遍历对象,需要用到Object.keys
小结
for-in
for-in数组遍历的是索引(键名),会遍历自定义的属性
for-in遍历对象是遍历属性名
for of
for-of数组遍历的是值,并且不会遍历自定义属性
for-of不适合遍历对象,如果要遍历对象,需要用到Object.keys