Kar*_*Sho 14 javascript string concat concatenation
我从面试中得到了这个问题,
[1,2] + [4,5,6][1]
Run Code Online (Sandbox Code Playgroud)
JavaScript给出答案1,25.
怎么回事?请清楚解释一下.
ade*_*neo 15
让我们从最后一部分开始,写得更详细
var arr = [4,5,6];
var value = arr[1];
Run Code Online (Sandbox Code Playgroud)
是相同的
[4,5,6][1]
Run Code Online (Sandbox Code Playgroud)
并且由于数组是基于零的5
,所以我们确实有
[1,2] + 5;
Run Code Online (Sandbox Code Playgroud)
第一部分等于
[1,2].toString(),
Run Code Online (Sandbox Code Playgroud)
并且返回字符串,"1,2"
因为当尝试在类似的表达式中使用它时,数组被转换为字符串,因为数组不能添加到数字,然后我们有
"1,2" + 5
Run Code Online (Sandbox Code Playgroud)
用数字连接字符串会产生字符串,并将字符串添加到一起
"1,25"
Run Code Online (Sandbox Code Playgroud)
它像这样崩溃:
从...开始:
[1,2] + [4,5,6][1]
Run Code Online (Sandbox Code Playgroud)
首先,评估每一方,并且由于右侧是数组初始化器和查找,因此它出现5
:
[1,2] + 5
Run Code Online (Sandbox Code Playgroud)
现在的+
运营商开始工作.它没有为数组定义,它首先要做的是尝试将其操作数转换为字符串或数字.在数组的情况下,它将是一个字符串,就像来自Array#toString
,它确实Array#join
给了我们:
"1,2" + 5
Run Code Online (Sandbox Code Playgroud)
当您使用+
任何一方是字符串时,结果是字符串连接.