在 JavaScript 中,我經常會使用 for(key in ..)
語句來遍歷對象的 key ,這是一種很常用的方式.
這里需要留意, 其實 for(.. in ..)
語句也可以用來遍歷數組,其中的 key
就是數組的 index
(索引值,0開始) .
除了在 for(.. in ..)
語句中使用, in
也可以作為一個單獨的關鍵字使用,用來判斷某個屬性或者元素是否存在與數組或者對象.一般會用在判斷語句中,下面進行說明
數組
var pig = ['head', 'hand', 'leg'];
console.log('head' in pig); // false
console.log('0' in pig); // true
console.log(4 in pig); // false
通過 in
操作判斷數組是否存在某個索引,逐個分析:
- 判斷
head
字符串是否為pig
的索引,很明顯,索引應該是數字,所以false
- 判斷
pig
是否有索引為字符串'0'
,可以看到最后判斷結果為 true, 這是因為執行in
關鍵字判斷時, JS引擎進行了隱式轉換 - 判斷數字
4
是否為pig
數組的索引,結果false
對象
var pig = {head: 'head', hand: 'head', leg: 'leg'};
console.log(head in pig); // false
console.log('head' in pig); // true
通過 in
操作判斷對象是否有某個鍵名,逐個分析:
- 判斷變量
head
是否為pig
的鍵名, 這里是一個未聲明未賦值的變量,當然不會是pig
的鍵名,返回false
- 判斷字符串
head
是否為 pig 的鍵名,返回 true.