为何JavaScript代码131+""".split(',').map(Number)返回1310?
为什么
131+""".split(',').map(Number)会输出1310? 核心原因是JavaScript的运算符优先级——成员访问(.)的优先级远高于加法(+),代码的执行顺序和你预想的完全不同。
一步步拆解执行逻辑:
- 首先执行
"".split(','):空字符串用逗号分割,得到数组[""] - 接着执行
.map(Number):将数组内的空字符串转为数字,Number("")的结果是0,因此得到数组[0] - 最后执行
131 + [0]:JavaScript中数字与数组相加时,数组会先被转为字符串"0",数字131也会被转为字符串"131",两者拼接后得到"1310",这就是最终输出的结果。
你原本想先把131转为字符串再进行后续处理,但因为没有添加括号改变优先级,所有数组相关操作都先于加法完成,完全打乱了预期顺序。如果要实现你的初衷,需要用括号强制调整执行顺序:
console.log( (131 + "").split(',').map(Number) );
这样会先执行131+""得到"131",再分割为["131"],最终转为数字数组输出[131]。
内容的提问来源于stack exchange,提问作者user280109
相关产品推荐
相关产品推荐

