var data = [7,8,9]
"0" in data //=>ture:数组包含元素"0"
1 in data //=>true:数组转换为字符串
3 in data //=> false:没有索引为3的元素
不理解为什么下面这两段代码为true
"0" in data //=>ture:数组包含元素"0"
1 in data //=>true:数组转换为字符串
迷茫2017-04-10 14:29:46
谢邀。
对于 Javascript
中的 in
操作符,根据 MDN
的定义是:
The in operator returns true if the specified property is in the specified object.
即如果属性存在于操作对象上时返回 true
,否则为 false
。
var obj = {name: 'stephenlee', age: 23};
'name' in obj //true
'hobby' in obj //false
属性名需要用字符串来指定:
name in obj //false
使用数字索引值来表示数组对象的属性名称,当然数组对象固有的一些属性不包括在内,例如 length
。
以题主问题中的数组为例:
var data = [7,8,9];
相当于:
data[0] = 7;
data[1] = 8;
data[2] = 9;
所以很自然有如下结果:
0 in data //true
1 in data //true
2 in data //true
3 in data //false
当然数组对象自带的属性也可以返回 true
:
length in data //true
也可以将数组对象的索引值和固有属性转换为字符串来处理:
'0' in data
'length' in data