我的意思不是深度比较。 我只想知道两个变量是否引用同一个实例。我应该使用a==b
还是a===b
?两个变量可以指向相同的内存但具有不同的类型吗?因为javascript在C++中没有类这样的概念,所以我不知道对象的类型是什么。是否所有对象都具有相同的类型:"对象",因此 === 决定它们的类型相等?如果是这样,=== 将与 == 相同。
摘自 A Drip of Javascript: Javascript 中的对象相等性:
。字符串和数字等基元按其值进行比较,而数组、日期和纯对象等对象则按其引用进行比较。通过引用进行的比较基本上是检查给定的对象是否引用内存中的相同位置。下面是其工作原理的示例。
var jangoFett = {
occupation: "Bounty Hunter",
genetics: "superb"
};
var bobaFett = {
occupation: "Bounty Hunter",
genetics: "superb"
};
var callMeJango = jangoFett;
// Outputs: false
console.log(bobaFett === jangoFett);
// Outputs: true
console.log(callMeJango === jangoFett);
您应该使用 ===,因为它可以避免难以找到的错误异常。 而且关于耗时,=== 也更好。