ES6-----for in和for of

140 阅读2分钟

前言

博主想成为一个前端工程师,正在学校疯狂肝路。这是博主第一次写技术博客,会分享一些自己在学习过程遇到觉得有意思的技术点,欢迎大家留言评论,同时也希望大家进行评论指导,如果出现有错误的理解,也希望大家指正,大家一起学习。

在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

简单的说,for-in大多用于遍历对象,而for-of大多用于遍历数组

------------------先更后加