-4
許多編程語言使用'for x in'的語法來遍歷列表/數組。爲什麼'for x in <array>'不能按預期工作?
它也存在於JavaScript中。然而,下面的代碼:
var arr = [5, 6, 9, 10];
for (var i in arr) {
console.log(i);
}
輸出陣列的索引「ARR」,而不是該數組本身的元件(不像其它的編程語言)。
我的問題是爲什麼?或者這種行爲的JavaScript邏輯是什麼?
這只是ECMAScript規定的行爲;所以它適用於比JavaScript更多的語言,它當然不限於nodejs。如果你想枚舉值而不是屬性名稱,你正在尋找['for ... of'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Statements/for ... of)而不是['for ... in'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in) 。這個問題是許多其他人的重複。 – canon
我會做一些事情:遍歷一個對象會給它的鍵,你可以使用它們來獲取值。如果它給出的值,你不能得到鑰匙。爲了一致性,陣列以相同的方式工作。 –
不,@Chris G,它不會像那樣工作--' for ... in'僅用於對象,OP中的'arr'是一個'Object'。示例代碼中它也是一個數組的事實是巧合的。 – Guss