2016-02-02 31 views
0

我正在查看關於JS的mozilla文檔的樣本,這裏是這個代碼片斷,它顯示For..of印刷3,5,7,但爲什麼不是「你好」?爲什麼for..of不會記錄foo值?

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" ????? 
} 
+4

您已將[MDN](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for ...)中的#Difference_between_for ... of_for ...的示例複製到... in),但是你沒有閱讀它的內容,_當'for ... in'遍歷屬性名時,'for ... of'遍歷屬性值:_。 'hello'是鍵「foo」的**值**。 – Tushar

+0

還有一個名爲「foo」的屬性,其值爲「hello」。它爲什麼不顯示它? –

+0

@Tushar你是否嘗試過這些代碼? 「你好」確實沒有打印。 – Lewis

回答

0

數組對它們的元素是可迭代的。這就是它的定義。這就是如何實現Array[Symbol.iterator]

請參閱this

Source。編號:
foo是財產。例如,3是一個元素,但「你好」不是。元素是作爲整數值屬性值出現的值。

相關問題