在 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.









网友评论