为什么新的字符串('hello') === 新的字符串('hello')评估为假?

19 浏览
0 Comments

为什么新的字符串('hello') === 新的字符串('hello')评估为假?

这个问题已经有了答案:在JavaScript比较中,应当使用哪个等于运算符(== vs. ===)?JavaScript比较运算符:Identity vs. Equality

为什么在JavaScript中以下声明返回false?

new String('hello') === new String('hello')

admin 更改状态以发布 2023年5月24日
0
0 Comments

你正在比较对象实例,这不像字符串比较 ('hello' === 'hello')。在JavaScript中,比较对象实际上是比较对象的内存地址,并且总是返回false,因为每个对象的内存地址都不同。

与其比较对象实例,比较字符串值 - jsFiddle

( String('hello') === String('hello') ) // returns true due to comparing strings


严格比较两个对象 - false不是相同的对象

new String('hello') === new String('hello')

严格比较两个字符串 - true,返回值相同且返回类型相同

String('hello') === String('hello')

0
0 Comments

两个String对象将始终不相等。请注意,JavaScript具有字符串原始值以及String构造函数来创建包装对象。所有对象相等比较(特别是使用===)都是作为引用相等测试进行的。引用两个不同的对象当然永远不会相等。

因此,"hello" === "hello"将是true,因为它们是字符串原始值。

0