ECMAScript Language Specification中有 11.9.1等于运算符(==):
注3:相等运算符并不总是可传递的。例如, 可能有两个不同的String对象,每个对象代表相同的对象 字符串值;每个String对象都被认为等于 ==运算符的字符串值,但两个String对象不会 相互平等。例如:
new String("a") == "a"
和"a" == new String("a")
都是 true 。new String("a") == new String("a")
false 。
但在 11.9.6严格的等式比较算法:
7。如果
x
和y
引用相同的对象,则返回 true 。否则,请返回 false 。
但不,用jsc
new String("a")===new String("a")
是真的。
这是一个jsc.exe错误?或者他们是同一个对象?比为什么?
答案 0 :(得分:0)
运算符===在js中返回true,如果它是相等的类型和相等的值。所以它返回true是正确的,因为它们都是String对象,它们的值是“a”。