为什么JavaScript中字符串数字相加不符合直觉,最后运算返回20?
问题解答:JavaScript字符串数字加减运算结果异常原因
- JavaScript中
+和-运算符优先级相同,执行顺序为从左到右 +运算符同时支持数值相加和字符串拼接两种逻辑,只要操作数中存在字符串,就会优先执行拼接操作-运算符仅支持数值运算,遇到非数值类型的操作数时,会自动触发隐式类型转换,将操作数转为Number类型后再计算
最后一行代码console.log("2" + "2" - "2");的执行过程可以拆分为两步:
- 先执行左侧的
"2" + "2":两个操作数都是字符串,触发拼接逻辑,得到结果字符串"22" - 再执行
"22" - "2":-运算符触发隐式类型转换,分别将两个字符串转为数值22和2,执行减法后得到结果20
前面的打印结果也可以对应验证规则:
console.log(2 + 2);两个操作数都是数字,直接相加得到4console.log("2" + "2");两个操作数都是字符串,拼接得到"22"console.log(2 + 2 - 2);所有操作数都是数字,按顺序计算得到2
内容的提问来源于stack exchange,提问作者Siya Mzam
相关产品推荐
相关产品推荐

