weixin_43935079 2019-05-16 08:28 采纳率: 0%
浏览 2050
已结题

javascript 中的indexof() 为什么{}这样的形式会返回-1

var person = { name: "Nicholas" };
var people = [{ name: "Nicholas" }];
alert(people.indexOf(person)); //-1

为什么这个是返回-1啊, indexOf不是要求===,即类型和值都相等,
var person = { name: "Nicholas" };
person === { name: "Nicholas" } // 为什么是false ,这里应该如何理解 ?

  • 写回答

7条回答 默认 最新

  • it_lin_web 2019-05-16 09:26
    关注

    首先说为什么是-1,因为你indexOf检索的是一个对象,也就是引用类型,换句话说检索得是person 的内存地址,而不是person 内存地址指向的内容,所以是-1。就是说下个问题person === { name: "Nicholas" }为false也是这个问题导致的,当你整个对象,引用类型比较是其实是比较内存地址。你需要去了解下引用类型和值类型的区别,你就明白了。

    评论

报告相同问题?