在 JavaScript 里,+ 操作符在什么情况下会执行字符串拼接操作?
考察说明
考查对 JavaScript 中加号运算符类型转换规则的理解。
回答思路
- 【回答框架 1】首先明确,加号运算符在 JavaScript 中扮演双重角色:当任一操作数是字符串时,它执行字符串拼接;否则执行数值加法。
- 【回答框架 2】具体规则是,如果操作数中存在字符串,那么另一个操作数会被强制转换为字符串,然后进行拼接。例如,数字 1 加字符串 '2' 得到 '12'。
- 【回答框架 3】对于非字符串的原始值,如数字、布尔值、null 或 undefined,加号会先尝试数值加法,但如果一个操作数是字符串,则全部转为字符串。
- 【回答框架 4】对于对象,会先调用其 valueOf 或 toString 方法转换为原始值,再根据上述规则决定是加法还是拼接。
- 【回答框架 5】需要注意,若两个操作数都是数值或都能转为数值,则执行数值加法;否则执行字符串拼接。
- 【关键点 1】任一操作数为字符串时,加号执行字符串拼接,另一个操作数转为字符串。
- 【关键点 2】对象类型会先通过 valueOf 或 toString 转为原始值再判断。
- 【关键点 3】加号的行为依赖操作数类型,不是固定不变的。
- 【易错点 1】误认为加号总是数值加法,忽略字符串拼接场景。
- 【易错点 2】忽略对象转换方法对结果的影响,例如数组与数字相加的结果。