面试题答案
一键面试在JavaScript中,+
操作符在不同数据类型操作数情况下的类型转换原理如下:
- 两个操作数都是数字:直接进行数学加法运算。例如:
let num1 = 5;
let num2 = 3;
let result = num1 + num2;
console.log(result);
- 一个操作数是字符串,另一个是任意类型: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
进行数学加法得到8
;obj2
通过toString()
返回"10"
,与"abc"
进行字符串拼接得到"10abc"
。
4. 一个操作数是布尔值,另一个是数字:布尔值会被转换为数字(true
转换为1
,false
转换为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"
。