2015-06-27 53 views
3

我有我的實驗就可以了for...of語句摘錄:如何對......的循環語句的工作在Javascript(ECMAScript中6)

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" 
} 

我的問題是,for...of應該在迭代運行價值觀,對吧?那麼爲什麼第二個for不打印"hello"

回答

5

陣列在它們的元素上迭代。這就是它的定義。這就是Array[Symbol.iterator]的實現方式。

參見http://www.2ality.com/2015/02/es6-iteration.html

+0

所以你的意思是foo是一個屬性,而不是一個元素。但不是數組索引,屬性本身? – Ramin

+1

0和'foo'都是屬性,而'3'是一個元素,但'hello'不是。元素是作爲整數值屬性值出現的值。 – 2015-06-27 17:39:38