为何JavaScript中2+3+"4"与"4"+2+3的运算结果不一致?
执行结果差异原因解释
首先给出问题对应的可运行代码:
const a = 2 + 3 + "4"; const b = "4" + 2 + 3; console.log(a); // 输出 54 console.log(b); // 输出 423
两个变量结果不同的核心是两个JavaScript基础规则共同作用的结果:
- 加法运算符
+是左结合的,运算顺序永远从左到右执行 - 加法运算触发隐式类型转换的规则:只要任意一个操作数为字符串类型,就会将另一个操作数也转为字符串,执行字符串拼接逻辑;只有两个操作数都是数字类型时,才会执行算术加法逻辑
变量a的运算过程
- 先执行最左侧的
2 + 3:两个操作数都是数字,执行算术加法,得到数字结果5 - 再执行
5 + "4":第一个操作数是数字,第二个是字符串,触发隐式转换将数字5转为字符串"5",执行字符串拼接,得到最终结果"54"
变量b的运算过程
- 先执行最左侧的
"4" + 2:第一个操作数是字符串,触发隐式转换将数字2转为字符串"2",执行拼接得到字符串"42" - 再执行
"42" + 3:第一个操作数是字符串,触发隐式转换将数字3转为字符串"3",执行拼接得到最终结果"423"
内容的提问来源于stack exchange,提问作者Muhammad Asif
相关产品推荐
相关产品推荐

