javascript - 为什么 new Number(2) != new String ("2") 在 JavaScript 中

标签 javascript object javascript-objects

以下评估为 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 Numbernew 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/

相关文章:

javascript - 如何仅在收到 props 时渲染 React(使用 Redux)组件?

javascript - 如何从 javascript 中的对象获取相邻键及其键值?

ruby - 如何理解#dup 和#clone 对引用其他对象的对象进行操作?

javascript - 在对象中使用数学运算

javascript - 下面代码的输出是 NaN,为什么?

javascript - 使用 Sublime Text(或其他编辑器)递归搜索单个源文件以及该文件中导入/包含的所有文件

javascript - 如何使用 draggable 和 droppable 将 <li> 附加到 <ul> ?

javascript - Chrome 在 JavaScript 执行期间重绘 DOM

Javascript内存管理(requestAnimationFrame回调)

java - 表达式的赋值 - 编译或运行时现象