关于javascript:for-of-和-for-in-的区别

51次阅读

共计 841 个字符,预计需要花费 3 分钟才能阅读完成。

for in

  1. 个别用于遍历对象的可枚举 属性。以及对象从构造函数原型中继承的属性。对于每个不同的属性,语句都会被执行。
  2. 不倡议应用 for in 遍历数组,因为输入的程序是不固定的。
  3. 如果迭代的对象的变量值是 null 或者 undefined, for in 不执行循环体,倡议在应用 for in 循环之前,先查看该对象的值是不是 null 或者 undefined

for of

1.for…of 语句在可迭代对象(包含 Array,Map,Set,String,TypedArray,arguments 对象等等)上创立一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

两者的区别

遍历对象

`var s={a:1,b:2,c:3}
var s1=Object.create(s);
for(var prop in s1){console.log(prop);//a b c
    console.log(s1[prop]);//1 2 3
}
for(let prop of s1){console.log(prop);// 报错如下 Uncaught TypeError: s1 is not iterable 
}
 for(let prop of Object.keys(s1)){ // 这里的不能够获取到 s1 的 key 的
    console.log(prop);// 啥都不输入
     console.log(s1[prop]);//1 2 3
}   
for(let prop of Object.keys(s1)){ // 这里的不能够获取到 s1 的 key 的
    console.log(prop);// a,b,c
     console.log(s[prop]);//1 2 3
}` 

*   1
*   2
*   3
*   4
*   5
*   6
*   7
*   8
*   9
*   10
*   11
*   12
*   13
*   14
*   15
*   16
*   17

遍历数组

`var a=[1,2,3]
for(let i in a){console.log(i);     //0 1 2
    console.log(a[i]); //1 2 3
 }
 for(let i of a){console.log(i); //1 2 3
}` 

*   1
*   2
*   3
*   4
*   5
*   6
*   7
*   8

遍历字符串

区别同上

正文完
 0