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

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

我想将数组的元素添加到另一个数组中,因此我尝试了以下方法:

[1,2] + [3,4]

它的答复是:

"1,23,4"

怎么一回事?


HUWWW
浏览 383回答 3
3回答

翻阅古今

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评价如下:放任lref是评价的结果AdditiveExpression.放任lval成GetValue(lref).放任rref是评价的结果MultiplicativeExpression.放任rval成GetValue(rref).放任lprim成ToPrimitive(lval).放任rprim成ToPrimitive(rval).如果Type(lprim)是String或Type(rprim)是String,然后返回连接的结果字符串。ToString(lprim)紧随其后ToString(rprim)返回将加法操作应用到ToNumber(lprim)和ToNumber(rprim)..见下面的说明11.6.3。您可以看到每个操作数都被转换。ToPrimitive..通过进一步的阅读,我们可以发现ToPrimitive将始终将数组转换为字符串,从而产生此结果。

蓝山帝景

这个+串接字符串,因此它将数组转换为字符串。[1,2] + [3,4]'1,2' + '3,4'1,23,4若要组合数组,请使用concat.[1,2].concat([3,4])[1,2,3,4]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript