新String(" a")对象的JavaScript(严格)相等

时间:2014-05-24 16:50:34

标签: javascript comparison

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。如果xy引用相同的对象,则返回 true 。否则,请返回 false

但不,用jsc

new String("a")===new String("a")

是真的。

这是一个jsc.exe错误?或者他们是同一个对象?比为什么?

1 个答案:

答案 0 :(得分:0)

运算符===在js中返回true,如果它是相等的类型和相等的值。所以它返回true是正确的,因为它们都是String对象,它们的值是“a”。

查看文档http://www.w3schools.com/js/js_comparisons.asp