【发布时间】:2017-10-27 02:32:31
【问题描述】:
为什么以下语句在 JavaScript 中返回 false?
new String('hello') === new String('hello')
【问题讨论】:
-
它可能是在比较字符串的位置,而不是实际的字符串。如果将字符串保存到变量中,然后比较变量,它应该返回 true。
-
出于同样的原因,
[] === []是false。 -
供参考:stackoverflow.com/a/3586788/899126。基本上,这是因为比较不是在两个字符串之间进行,而是在两个对象之间进行。您可以在字符串对象上调用
.valueOf(),您的比较将返回true。 -
@aashnisshah 也返回 false
-
@aashnisshah:变量对比较值没有任何影响。它们只是占位符。
标签: javascript equality comparison-operators equality-operator identity-operator