为了账号安全,请及时绑定邮箱和手机立即绑定

为什么[1,2]+[3,4]=“1,23,4”在JavaScript中?

为什么[1,2]+[3,4]=“1,23,4”在JavaScript中?

HUWWW 2019-07-22 15:39:44
为什么[1,2]+[3,4]=“1,23,4”在JavaScript中?我想将数组的元素添加到另一个数组中,因此我尝试了以下方法:[1,2] + [3,4]它的答复是:"1,23,4"怎么一回事?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

JavaScript的+运算符有两个用途:添加两个数字或连接两个字符串。它对数组没有特定的行为,所以它将它们转换为字符串,然后加入它们。

如果要连接两个数组以生成一个新数组,请使用这个.concat方法相反:

[1, 2].concat([3, 4]) // [1, 2, 3, 4]

如果要有效地将所有元素从一个数组添加到另一个数组,则需要使用.Push方法:

var data = [1, 2];// ES6+:data.push(...[3, 4]);// or legacy:Array.prototype.push.apply(data, [3, 4]);// data is now [1, 2, 3, 4]

的行为+运算符定义为ECMA-262 5E第11.6.1节:

11.6.1加法运算符(+)

加法运算符执行字符串连接或数字加法。生产AdditiveExpression : AdditiveExpression + MultiplicativeExpression评价如下:

  1. 放任

    lref

    是评价的结果

    AdditiveExpression.

  2. 放任

    lval

    GetValue(lref).

  3. 放任

    rref

    是评价的结果

    MultiplicativeExpression.

  4. 放任

    rval

    GetValue(rref).

  5. 放任

    lprim

    ToPrimitive(lval).

  6. 放任

    rprim

    ToPrimitive(rval).

  7. 如果

    Type(lprim)

    String

    Type(rprim)

    String

    ,然后
    1. 返回连接的结果字符串。

      ToString(lprim)

      紧随其后

      ToString(rprim)

  8. 返回将加法操作应用到

    ToNumber(lprim)

    ToNumber(rprim)

    ..见下面的说明11.6.3。

您可以看到每个操作数都被转换。ToPrimitive..通过进一步的阅读,我们可以发现ToPrimitive将始终将数组转换为字符串,从而产生此结果。


查看完整回答
反对 回复 2019-07-22
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

这个+串接字符串,因此它将数组转换为字符串。

[1,2] + [3,4]'1,2' + '3,4'1,23,4

若要组合数组,请使用concat.

[1,2].concat([3,4])[1,2,3,4]


查看完整回答
反对 回复 2019-07-22
  • 3 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信