美文网首页
javascript中Array中的indexOf的坑

javascript中Array中的indexOf的坑

作者: 毛毛_000e | 来源:发表于2019-05-24 10:14 被阅读0次

    昨晚看《javascript高级程序设计》的书的时候,书中的一个示例不明白,代码是这样子的:

    var person={ name:"cc" }

    var people=[{ name:"cc" }]

    var morePeople=[ person ]

    alert(people.indexOf(person))  //-1

    alert(morePeople.indexOf(person)) //0

    后面一个输出结果能理解,但是为什么第一个输出是-1呢?因为-1代表着要查找的这个元素在父元素中是不存在的。后来跟同事请教了一下,原来是这样子的:这个person是一个对象,在js中它是属于复杂数据类型的,js的另一种数据类型是基本数据类型,比如Number,String,Boolean,Null,Underfine,当引用这2种数据类型的时候,基本数据类型是按值引用的,而复杂数据类型是按地址引用的。

    放在题目这里的话,在morePeople中能够找到person这是能够理解的,因为morePeople中的对象就是引用person的对象地址,而在people中找不到person是因为,当查找person的时候是拿person的地址去匹配people中是否也有这个相同地址的对象,显然person的地址跟数组中对象元素的地址是不一样的,所以indexOf就会返回-1(不存在)

    相关文章

      网友评论

          本文标题:javascript中Array中的indexOf的坑

          本文链接:https://www.haomeiwen.com/subject/tubwzqtx.html