MST

星途 面试题库

面试题:JavaScript 操作符之类型转换原理

请解释 JavaScript 中 + 操作符在不同数据类型操作数情况下的类型转换原理,并举例说明。比如一个数字和一个字符串相加时,具体发生了什么?
23.6万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

在JavaScript中,+操作符在不同数据类型操作数情况下的类型转换原理如下:

  1. 两个操作数都是数字:直接进行数学加法运算。例如:
let num1 = 5;
let num2 = 3;
let result = num1 + num2; 
console.log(result); 
  1. 一个操作数是字符串,另一个是任意类型:JavaScript会将非字符串类型的操作数转换为字符串,然后进行字符串拼接。例如:
let num = 10;
let str = "abc";
let result = num + str; 
console.log(result); 

这里数字10被转换为字符串"10",然后与"abc"拼接成"10abc"。 3. 两个操作数都是对象:首先调用对象的valueOf()方法,如果返回的不是原始值,再调用toString()方法,将返回值转换为原始值后进行字符串拼接或数学加法(如果都转换为数字的话)。例如:

let obj1 = {
    valueOf: function() {
        return 5;
    }
};
let obj2 = {
    toString: function() {
        return "10";
    }
};
let result1 = obj1 + 3; 
let result2 = obj2 + "abc"; 
console.log(result1); 
console.log(result2); 

这里obj1通过valueOf()返回5,与数字3进行数学加法得到8obj2通过toString()返回"10",与"abc"进行字符串拼接得到"10abc" 。 4. 一个操作数是布尔值,另一个是数字:布尔值会被转换为数字(true转换为1false转换为0),然后进行数学加法运算。例如:

let bool = true;
let num = 5;
let result = bool + num; 
console.log(result); 

这里true转换为1,与5相加得到6。 5. 一个操作数是布尔值,另一个是字符串:布尔值会被转换为字符串(true转换为"true"false转换为"false"),然后进行字符串拼接。例如:

let bool = false;
let str = " is false";
let result = bool + str; 
console.log(result); 

这里false转换为"false",与" is false"拼接得到"false is false"