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:数组转换为字符串
认证高级PHP讲师
谢邀。 对于 Javascript 中的 in 操作符,根据 MDN 的定义是:
Javascript
in
MDN
The in operator returns true if the specified property is in the specified object.
即如果属性存在于操作对象上时返回 true,否则为 false。
true
false
var obj = {name: 'stephenlee', age: 23}; 'name' in obj //true 'hobby' in obj //false
属性名需要用字符串来指定:
name in obj //false
使用数字索引值来表示数组对象的属性名称,当然数组对象固有的一些属性不包括在内,例如 length。 以题主问题中的数组为例:
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
in 操作符是区查询对象的property,详见>>
谢邀。
对于
Javascript
中的in
操作符,根据MDN
的定义是:即如果属性存在于操作对象上时返回
true
,否则为false
。一般的对象
属性名需要用字符串来指定:
数组对象
使用数字索引值来表示数组对象的属性名称,当然数组对象固有的一些属性不包括在内,例如
length
。以题主问题中的数组为例:
相当于:
所以很自然有如下结果:
当然数组对象自带的属性也可以返回
true
:也可以将数组对象的索引值和固有属性转换为字符串来处理:
in 操作符是区查询对象的property,详见>>