是什麼語法如下意思:[array/object]中的[literal]是什麼意思?
1 in [1,2,3,5]
我知道這並不在數組中搜索1。但它有什麼作用?
我已經看到了它在循環使用:
for (var i in testArray)
{
}
但也看到了這一點單獨使用。這是否意味着檢查文字是數組中的有效索引還是其他操作數的對象?
是什麼語法如下意思:[array/object]中的[literal]是什麼意思?
1 in [1,2,3,5]
我知道這並不在數組中搜索1。但它有什麼作用?
我已經看到了它在循環使用:
for (var i in testArray)
{
}
但也看到了這一點單獨使用。這是否意味着檢查文字是數組中的有效索引還是其他操作數的對象?
文字in
對象表示: 「從對象獲取屬性文字」。
當在循環中使用時,引擎將嘗試訪問對象的所有屬性。
1 in [1,2,3,4]
不檢查值爲1
的元素的發生,但它檢查元素1(array[1]
)是否存在。
它看起來像一個廉價的方式,不要使用傳統的for
循環爲陣列中的每個項目。
你的第二個例子是for-each循環。它沒有字面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這樣的情況下。
如果指定的對象中存在指定的屬性,則'in'運算符返回true;在循環中使用它可以讓你遍歷對象
很簡單,it's an object property search的所有屬性:
print ('a' in {'a':1, 'b': 2}); // true
print ('c' in {'a':1, 'b': 2}); // false
這是the similar use of in
in for
loops微妙的不同。
還要注意的是,應該不被用於數組,雖然這是一個常見的錯誤作出。
這是不確定的哪些屬性除了數字鍵組成的陣列的內部,所以你應該堅持到陣列API(如indexOf)如果你使用數組,否則你會behaviour that you may not expect結束:
print ('length' in [1,2,3,4]); // true
[MDN - 'in'操作](https://developer.mozilla.org/en/JavaScript/Reference/Operators/Special/in) –