javascript - 为什么数组等于其对应的字符串?

标签 javascript arrays reference equality

为什么当一个数组与其对应的字符串比较时,它的计算结果为 true?

var a = [1,2,3];
var b = '1,2,3';

console.log(a==b);// true

变量a存储为其分配的数组的内存地址。那么内存地址如何等于该数组对应的字符串。

最佳答案

这是由于语言的规范和语义造成的。该数组是一个对象,在与字符串比较之前将被强制转换为字符串。

您可以遵循转换路径:
7.2.15 Abstract Equality Comparison

  1. If Type(x) is Object and Type(y) is either String, Number, BigInt, or Symbol, return the result of the comparison ? ToPrimitive(x) == y.

它基本上会经历所有步骤,直到到达11。
ToPrimitive(Array) 最终引用并调用属性 .toString https://tc39.es/ecma262/#sec-array.prototype.tostring
https://tc39.es/ecma262/#sec-object.prototype.tostring

关于javascript - 为什么数组等于其对应的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62207802/

相关文章:

c# - 我在哪里可以找到 System.Web.HttpContext.Current.Server dll?

java - PHP - 如何检查两个引用是否指向同一底层对象(内存地址)?

javascript - 从电子邮件到灯箱 - 帮助!

javascript - window.addEventListener ("load",在页面加载时不起作用

javascript - 透明图像 - 在 JS 中可能吗?

javascript - 关于我的 Spring Rest 服务的 jQuery 和 403 错误以及 Cors 问题40

c++ - 在 For 循环中使用数组时重载 Cout 运算符? C++

我可以在 C 中创建一个 Char 指针数组吗?

java - 测试 char 是否为 int 时出现 ArrayIndexOutOfBounds

c# - 通过 RealProxy 引用参数