javascript – 为什么在数字中添加数组会返回一个字符串?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么在数字中添加数组会返回一个字符串?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Why is [1,2] + [3,4] = “1,23,4” in JavaScript?13个
var array = [1,2,4];

array+1  //gives '1,41'.

谁能解释这种行为?

解决方法

Can anyone explain this behavIoUr?

这个答案试图从规范的角度解释这种行为.

根据spec,在运行时评估期间,两个表达式(左和右)都转换为它们的原始值.

  1. Let lprim be ToPrimitive(lval).
  2. Let rprim be ToPrimitive(rval).

toPrimitive尝试将提示:数字(因为在算术评估期间调用)传递给OrdinaryToPrimitive

  1. If hint is “string”,then
    a. Let methodNames be «”toString”,“valueOf”».
  2. Else,
    b. Let methodNames be «”valueOf”,“toString”». //this gets invoked

由于其中一个值通过上面的4a)转换为字符串,因此会发生字符串连接.

于是

[1,4] 1 => [1,4] .toString()“1”=> “1,4”“1”=> (最后)“1,41”

猜你在找的JavaScript相关文章