var person = { name: "Nicholas" };
var people = [{ name: "Nicholas" }];
alert(people.indexOf(person)); //-1
为什么这个是返回-1啊, indexOf不是要求===,即类型和值都相等,
var person = { name: "Nicholas" };
person === { name: "Nicholas" } // 为什么是false ,这里应该如何理解 ?
var person = { name: "Nicholas" };
var people = [{ name: "Nicholas" }];
alert(people.indexOf(person)); //-1
为什么这个是返回-1啊, indexOf不是要求===,即类型和值都相等,
var person = { name: "Nicholas" };
person === { name: "Nicholas" } // 为什么是false ,这里应该如何理解 ?
首先说为什么是-1,因为你indexOf检索的是一个对象,也就是引用类型,换句话说检索得是person 的内存地址,而不是person 内存地址指向的内容,所以是-1。就是说下个问题person === { name: "Nicholas" }为false也是这个问题导致的,当你整个对象,引用类型比较是其实是比较内存地址。你需要去了解下引用类型和值类型的区别,你就明白了。