javascript - 在 JavaScript 中,为什么除了字符串之外,任何对象都不相等?

标签 javascript ecmascript-5

<分区>

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

其他一些例子:

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

但是,字符串也是对象(这就是为什么您可以执行 ''.replace() 并扩展它们),那么为什么这样做:

'' == '' // => true

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

最佳答案

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

与数字相同。

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

关于javascript - 在 JavaScript 中,为什么除了字符串之外,任何对象都不相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681238/

相关文章:

javascript - 为什么是 Object.defineProperty() 而不是 this.defineProperty() (对于对象)?

C++11 正则表达式多次匹配捕获组

javascript - 我们如何为使用YOLO检测到的不同对象设置不同的 `colors`

可变长度参数的 Javascript 约定

javascript - Bootstrap 模式不起作用?

javascript - ECMAScript-5 中属性 "feature"的优点是什么?

javascript - 如何使用 ES5 使用多个值查找数组中对象的索引?

javascript - 通过 servlet 将数据库中的数据显示到 fullcalendar - 未列出事件

javascript - 嵌入代码不会显示在 WordPress 页面中

javascript - Nodejs 4.x 上的 ES6 代码 : Is V8 4. 5 直接运行 ES6 的原生 JS 引擎?