for in 和 for of

239 阅读1分钟
for in 和 for of
 本文借鉴大哥艾迪蛋https://blog.csdn.net/qq_43796489/article/details/119566594
  • 遍历数组的时候

    for in 中的key是下标值

    for of 中的key是具体的元素值。

    let arr = [1, 2, 3, 4];
        for (let key in arr) {
            console.log(key);//0,1,2,3
        }
        for (let key of arr) {
            console.log(key);//1,2,3,4
        }
​
  • 遍历对象的时候

    for in的key是属性名

    for of是不能遍历对象的

        let arr = {
                name: 'cat',
                age: 1,
                sex: 'man'
            };
            for (let key in arr) {
                console.log(key);//name,age,sex
                console.log(arr[key])//cat,1,man
            }
            for (let key of arr) {
                console.log(key);//Uncaught TypeError: arr is not iterable
            }
    
  • 遍历数组对象的时候

    for in中的key仍然是下标值

    for of中的key仍然是对应的值

    let arr = [            { name: 'cat' },            { age: 1 },            { sex: 'man' }        ]
            for (let key in arr) {
                console.log(key);//0,1,2
                console.log(arr[key]);//{ name: 'cat' },{ age: 1 },{ sex: 'man' }
            }
            for (let key of arr) {
                console.log(key);//{ name: 'cat' },{ age: 1 },{ sex: 'man' }
                for (let key1 in key) {
                    console.log(key[key1]);//cat,1,man
                }
            }
    

    总结:for in适合遍历对象,for of适合遍历数组。for in遍历的是数组的索引,对象的属性,以及原型链上的属性。