JavaScript中'+'运算符处理字符串与数字规则及代码输出339原因解析
JavaScript中
+运算符处理字符串、数字混合运算的规则 核心机制
+是JavaScript里唯一一个同时承担算术加法、字符串拼接双重功能的算术运算符,和数字、字符串混合运算时遵循以下规则:
- 运算结合方向为从左到右,同优先级下按顺序依次计算
- 只要
+两侧的操作数有任意一个是字符串类型,就会执行字符串拼接逻辑:非字符串的操作数会被隐式转换为字符串,最终拼接为新的字符串结果 - 如果
+两侧都不是字符串类型(比如都是数字、布尔值),才会执行算术加法,返回数字类型结果 - 和
+不同,-/*//等其他算术运算符没有字符串拼接逻辑:无论操作数是什么类型,都会先尝试将其隐式转换为数字,再执行对应算术运算,最终返回数字类型结果
示例代码运算过程拆解
针对给出的代码:
console.log(3 + '4' + 5 - 6)
从左到右逐次计算的过程如下:
- 首先计算最左侧的
3 + '4':右侧操作数是字符串'4',触发字符串拼接,数字3被转换为字符串'3',拼接后得到字符串'34' - 接着计算
'34' + 5:左侧操作数是上一步得到的字符串'34',再次触发字符串拼接,数字5被转换为字符串'5',拼接后得到字符串'345' - 最后计算
'345' - 6:这里使用的是-运算符,不执行拼接逻辑,首先将左侧字符串'345'隐式转换为数字345,再执行减法运算:345 - 6 = 339
最终控制台输出的结果就是339。
内容的提问来源于stack exchange,提问作者Deepak Sharma
相关产品推荐
相关产品推荐

