面试题答案
一键面试-
对于
add(1, '2')
:- 在JavaScript中,
+
运算符遇到一个数字和一个字符串时,会将数字转换为字符串然后进行字符串拼接。所以add(1, '2')
的结果是"12"
。
- 在JavaScript中,
-
对于
add('1', 2)
:- 同样,
+
运算符会将数字2
转换为字符串"2"
,然后进行字符串拼接。所以add('1', 2)
的结果是"12"
。
- 同样,
-
修改函数以正确相加(考虑隐式类型转换陷阱及优化):
function add(a, b) {
// 先将参数都转换为数字类型
const numA = typeof a ==='string'? parseFloat(a) : a;
const numB = typeof b ==='string'? parseFloat(b) : b;
// 判断是否转换成功(如果字符串无法转换为有效数字,parseFloat会返回NaN)
if (isNaN(numA) || isNaN(numB)) {
throw new Error('参数无法正确转换为数字进行相加');
}
return numA + numB;
}
这样修改后,函数会尝试将传入的参数转换为数字类型,如果转换成功则进行数字相加,若有参数无法转换为有效数字则抛出错误,避免了隐式类型转换带来的意外字符串拼接问题。