从下面的示例中可以看到,数组和数字作为字符串添加。
console.log([5] + 25); //525
为什么会这样?对数组执行加法时,toString
? 该方法不应该toString
仅在尝试将对象转换为字符串(String
,alert
...)时运行吗?在这种情况下,我不想将数组转换为字符串......
从下面的示例中可以看到,数组和数字作为字符串添加。
console.log([5] + 25); //525
为什么会这样?对数组执行加法时,toString
? 该方法不应该toString
仅在尝试将对象转换为字符串(String
,alert
...)时运行吗?在这种情况下,我不想将数组转换为字符串......
根据 Flanagan(JavaScript。完整指南,第 7 版 - 2021 年):
也就是把数组转换成字符串,为什么:
(如果 valueOf() 不存在或返回一个对象)。换句话说,数组应该转换为数字,但是:
因此,一个数组,由于它的 valueOf() 方法将数组本身作为对象返回,最终返回调用 toString() 的结果。
对于一个实验,你可以重写 valueOf() 方法:
本机 valueOf() 返回用于比较的内容: