Xuz*_*ang 7 javascript for-loop
在MDN https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of中,
它说While for...in迭代属性名称,for...of迭代属性值.
那么,为什么第二个for...of不记录"你好"?
let arr = [3, 5, 7];
arr.foo = "hello";
for (let i in arr) {
console.log(i); // logs "0", "1", "2", "foo"
}
for (let i of arr) {
console.log(i); // logs "3", "5", "7"
}
Run Code Online (Sandbox Code Playgroud)
for ... in语句以任意顺序迭代对象的可枚举属性.
更确切地说,它还包括其原型链中的可枚举属性.
并且每个对象都被视为相同.它很简单,令人困惑,许多人在阵列上使用时都讨厌它.
for..of在内部使用符号.与任何对象[Symbol.iterator]可以通过遍历for..of,但什么是迭代,以及以什么顺序在符号定义,而不是语句本身的语义(允许其中属性不最初称为懒迭代器).
在数组的情况下,迭代器遍历零和数组之间的每个属性length-1,甚至是未定义且不会被拾取的属性for..in.但是它完全忽略了其他属性,就像Array .toString()从一开始就做的那样,以及Array .forEach()和来自ES5的朋友.这使得数组迭代一致.
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |