2011-09-19 221 views
1

是什麼語法如下意思:[array/object]中的[literal]是什麼意思?

1 in [1,2,3,5] 

我知道這並不在數組中搜索1。但它有什麼作用?

我已經看到了它在循環使用:

for (var i in testArray) 
{ 

} 

但也看到了這一點單獨使用。這是否意味着檢查文字是數組中的有效索引還是其他操作數的對象?

+0

[MDN - 'in'操作](https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/in) –

回答

2

文字in對象表示: 「從對象獲取屬性文字」。

當在循環中使用時,引擎將嘗試訪問對象的所有屬性。

1 in [1,2,3,4]不檢查值爲1的元素的發生,但它檢查元素1(array[1])是否存在。

1

它看起來像一個廉價的方式,不要使用傳統的for循環爲陣列中的每個項目。

你的第二個例子是for-each循環。它沒有字面1(一個)。

1

它用於迭代JavaScript對象。

此循環將迭代對象中的每個「鍵」。

其常見的用法是通過這樣的對象迭代:

var Car = { color: "blue", price: 20000 }; 
for (var key in Car) 
    console.log("Propery " + key + " of Car is: " + Car[key]); 

Live test case - 檢查瀏覽器/ Firefox的JavaScript控制檯查看輸出。

當用於普通陣列,每一個「鍵」將是指數..例如:

var nums = [20, 15, 30] 
for (var key in nums) 
    console.log("Propery " + key + " of array is: " + nums[key]); 

將顯示鍵爲0,1和2爲Updated fiddle這樣的情況下。

1

如果指定的對象中存在指定的屬性,則'in'運算符返回true;在循環中使用它可以讓你遍歷對象

3

很簡單,it's an object property search的所有屬性:

print ('a' in {'a':1, 'b': 2}); // true 
print ('c' in {'a':1, 'b': 2}); // false 

Live demo.

這是the similar use of in in for loops微妙的不同。


還要注意的是,應該被用於數組,雖然這是一個常見的錯誤作出。

這是不確定的哪些屬性除了數字鍵組成的陣列的內部,所以你應該堅持到陣列API(如indexOf)如果你使用數組,否則你會behaviour that you may not expect結束:

print ('length' in [1,2,3,4]); // true