美文网首页
for...of 与 for...in

for...of 与 for...in

作者: 婆娘漂亮生活安逸 | 来源:发表于2022-03-03 15:23 被阅读0次

    一. 请问,以下打印出什么东西?


    const obj = {
      name: "Maning",
      age: "secret",
      hobby: "reading",
    };
    
    const arr = [
      { name: "XXX", age: "11", hobby: "singing" },
      { name: "YYY", age: "22", hobby: "dancing" },
    ];
    
    for (const i in obj) {
      console.log(i);
    }
    
    for (const i in arr) {
      console.log(i);
    }
    
    for (const i of arr) {
      console.log(i);
    }
    
    for (const i of obj) {
      console.log(i);
    }
    

    反正,我第一眼看到的时候,我在想这不都一样吗?然后细细一看,是 in 和 of 不一样,还有 obj 和 arr 不一样。

    直接上答案吧!

    // for...in(obj)
    name
    age
    hobby
    
    // for...in(arr)
    o
    1
    
    // for...of(obj)
    TypeError: obj is not iterable
    
    // for...of(arr)
    { name: 'XXX', age: '11', hobby: 'singing' }
    { name: 'YYY', age: '22', hobby: 'dancing' }
    





    2. 为啥呢?


    这里我直接上官方文档的解释吧;真的写的太精准太好了,导致我复制过来以后,都不想再解释一遍。自己品吧;

    for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。

    for...of语句可迭代对象(包括 ArrayMapSetStringTypedArrayarguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

    相关文章

      网友评论

          本文标题:for...of 与 for...in

          本文链接:https://www.haomeiwen.com/subject/xfxurrtx.html