JavaScript中+运算符遇字符串必转字符串拼接:5+"3"→"53","10"+2.5→"102.5",null/undefined转对应字符串;数值相加需显式转换如Number()或+str。

JavaScript 中,当 Number 类型数值 与 字符串相加 时,运算符 + 会触发 隐式类型转换,结果总是字符串 —— 这是 JS 的设计特性,不是 bug。
字符串优先:+ 运算符的“字符串化”倾向
只要 + 两边任意一方是字符串,JS 就把另一方也转成字符串,然后拼接。数值不会被“加”,而是被 String() 转换后连接。
-
5 + "3"→"53"(数字 5 转为字符串 "5",再拼接) -
"10" + 2.5→"102.5"(2.5 转为 "2.5") -
0 + ""→"0"(注意:不是空字符串,0 转字符串是 "0") -
NaN + "test"→"NaNtest"(NaN 转字符串就是 "NaN")
注意 null 和 undefined 的特殊表现
它们不是数字,但参与字符串相加时也有固定转换规则:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
null + "abc"→"nullabc"(null转字符串是 "null") -
undefined + "123"→"undefined123"(undefined→ "undefined") -
"" + null→"null","" + undefined→"undefined"
想做数学加法?必须确保两边都是数字
如果本意是数值相加,但其中一个是字符串,需主动转换:
立即学习“Java免费学习笔记(深入)”;
- 用
Number(str):例如Number("123") + 45→168 - 用一元加号
+str:例如+"42" + 8→50(前提是字符串可解析为有效数字) - 用
parseInt/parseFloat(适合带单位或前导空格的字符串):例如parseInt(" 077 ", 10) + 1→78 - 避免
+"abc"→NaN,后续计算会污染结果
小技巧:快速判断是否发生字符串拼接
遇到 a + b 结果异常,先检查类型:
-
typeof a === "string" || typeof b === "string"→ 必定字符串拼接 -
console.log(typeof (a + b)):结果是"string"就说明触发了隐式转换 - 用严格相等验证:
5 + "2" === "52"是true;而5 + 2 === "52"是false

















