MST

星途 面试题库

面试题:JavaScript 类型转换规则应用

请解释以下代码输出结果的原因:`console.log(1 + '2' + 3);` 并阐述在 JavaScript 中字符串与数字相加时的类型转换规则。
44.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 代码输出结果及原因
    • 代码 console.log(1 + '2' + 3); 的输出结果是 123
    • 原因是在JavaScript中,当使用 + 运算符进行运算时,如果其中一个操作数是字符串,+ 运算符会被当作字符串连接运算符。在 1 + '2' 中,数字 1 会被转换为字符串 '1',然后与字符串 '2' 进行连接,得到 '12'。接着,'12' + 3,数字 3 又会被转换为字符串 '3',与 '12' 连接,最终得到 '123'
  2. 字符串与数字相加时的类型转换规则
    • + 运算符的其中一个操作数是字符串时,另一个操作数会被转换为字符串,然后进行字符串连接操作。例如:
      console.log(5 + 'abc'); // 输出 '5abc'
      console.log('xyz' + 10); // 输出 'xyz10'
      
    • 如果 + 运算符两边都是数字,则进行常规的数字加法运算。例如:
      console.log(5 + 10); // 输出 15
      
    • 当数字与布尔值相加时,布尔值会先被转换为数字(true 转换为 1false 转换为 0),然后进行数字加法运算。例如:
      console.log(5 + true); // 输出 6
      console.log(5 + false); // 输出 5
      
    • 当对象与数字或字符串相加时,对象会先调用 valueOf() 方法,如果返回的不是原始值,再调用 toString() 方法,然后根据得到的结果按照上述规则进行运算。例如:
      const obj = {
        valueOf: function () {
          return 10;
        }
      };
      console.log(5 + obj); // 输出 15
      
      const obj2 = {
        toString: function () {
          return '20';
        }
      };
      console.log(5 + obj2); // 输出 '520'