来自一本书的 JS 代码片段

JS code snippet from a book

本文关键字:JS 代码 片段 一本      更新时间:2023-09-26

我有以下代码:

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

我不明白为什么当人是一个数组并包含{ name: "Nicholas" }时,第一个警报会给出 -1(未找到)

因为虽然两个对象包含相同的信息,但它们不是同一个对象。例如:

var nick = { name: 'Nick' };
var nick2 = { name: 'Nick' };
console.log(nick === nick2); // false
console.log(nick === nick); // true

这是真的,因为Javascript不会在对象之间进行每个属性的比较来确定相等性。它只检查"这是否与另一个对象完全相同?如果且仅当这是真的,在比较两个对象时,你才会得到一个真实的结果。

.indexOf使用此类比较来确定数组中是否有任何对象或值。