以下评估为 true
:
new Number(2) == 2
new String("2") == "2"
很明显,但请执行以下操作:
"2" == 2
new Number(2) == "2"
new String("2") == 2
那么有人可以清楚地解释为什么他下面的评估是 false
吗?
new Number(2) == new String("2")
最佳答案
因为 JavaScript 具有数字和字符串(和 bool 值)的原始 和对象 版本。 new Number
和 new String
创建 object 版本,当您将 ==
与对象引用一起使用时,您比较对象引用,而不是值。
new String(x)
和 String(x)
是根本不同的东西(Number
也是如此)。 使用 new
运算符,您正在创建一个对象。 如果没有 new
运算符,您将进行类型强制转换——例如String(2)
给你 "2"
和 Number("2")
给你 2
。
关于javascript - 为什么 new Number(2) != new String ("2") 在 JavaScript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25553062/