严格相等适用于变量但不适用于对象

Strict equality works on variables but not on objects

我有一个变量定义为:

var o = new String("0");

在我写的时候在控制台中:

o === o

它returnstrue 但是当我写的时候:

new String("0") === new String("0")

它returnsfalse

我不明白为什么它对变量引用起作用而不对对象起作用?

我试过:

(new String("0")) === (new String("0"))

因为运算符优先级可能会出现问题,但还是returnsfalse

 new String("0") === new String("0")

此处您比较的是两个具有不同引用的不同字符串。这就是为什么你越来越假。

 o === o

在这里,你实际上是在比较同一个字符串(在这种情况下引用是相同的)。