8

JS 中的一切都是对象。我一直都知道这一点,我完全理解这一点。我知道为什么{} !== {}。这是两个不同的对象。就像你要写出来一样new Object() == new Object()

其他一些例子:

{} == {} // => false
[] == [] // => false
/ / == / / // => false
new String() == new String() // => false

但是,字符串也是对象(这就是你可以做''.replace()和扩展它们的原因),所以为什么这样做:

'' == '' // => true

显然,如果这不起作用,比较两个字符串会很头疼,但这似乎与语言的其他部分不一致。在内部,发生了什么?它只是一次性的还是背后有其他概念?

4

3 回答 3

4

JavaScript 基本上始终将字符串和数字视为标量,在调用方法时将它们转换为对象,然后在您没有显式声明的情况下转换回来new String("");

与数字相同。

如果没有字符串/数字/布尔相等,您将很难做很多事情。

于 2013-05-21T23:46:21.600 回答
3

这是一次性的。

参考

字符串文字和字符串对象之间是有区别的。如果你有兴趣,这篇文章会更详细。

布尔值和数字也是如此。这些原语被比较不同于对象。

于 2013-05-21T23:42:37.697 回答
0

JavaScript 中有五种基本类型:数字、字符串、布尔值、未定义和空值。将空字符串文字""与自身进行比较与比较没有什么不同5 === 5

于 2013-05-21T23:53:31.337 回答