以下代码导致错误的原因是什么?
{} === {}
//false
这段代码变成真的原因是什么?
var obj = {};
obj === obj
//true
请用简单明了的语言回答
以下代码导致错误的原因是什么?
{} === {}
//false
这段代码变成真的原因是什么?
var obj = {};
obj === obj
//true
请用简单明了的语言回答
在第一种情况下,您正在创建两个对象并比较它们。在第二种情况下,您正在比较同一个对象。
当你这样做时,{}
你正在创建一个(空)对象文字(一个没有属性的新对象)。当你在做
{} === {}
您正在比较两个完全不同的对象,所以它返回false
.
但是,当您这样做时:
var obj = {};
obj === obj
你正在比较同一个对象,所以它返回true
.
其次,您正在将一个对象与自身进行比较,这在逻辑上是相等的。
起初,您不是在比较相同的事物,而是尝试比较显示相同的事物。
{} 创建一个新对象。
=== 检查它们实际上是同一个对象。尽管它们都是新的空对象,但它们实际上是不同的空对象。
要了解为什么这很重要,请尝试以下操作:
var a = {};
var b = {};
var c = a;
a.key = 'value';
console.log(b);
console.log(c);
你会看到因为 a 和 b 是不同的空对象,所以改变 a 不会改变 b。因为 c 实际上和 a 是同一个空对象,所以将某物放入 a 也将其放入 c。