Home  >  Q&A  >  body text

javascript - in运算符基础问题

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中文网PHP中文网2748 days ago454

reply all(2)I'll reply

  • 迷茫

    迷茫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
    

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:29:46

    in 操作符是区查询对象的property,详见>>

    reply
    0
  • Cancelreply