面试题答案
一键面试避免隐式类型转换错误的方法
- 显式类型检查:使用
typeof
操作符对变量类型进行检查,确保操作数类型符合预期。例如:
function addNumbers(a, b) {
if (typeof a!== 'number' || typeof b!== 'number') {
throw new Error('Both arguments must be numbers');
}
return a + b;
}
- 使用严格相等运算符:始终使用
===
和!==
进行比较,避免使用==
和!=
,因为它们会进行隐式类型转换。例如:
let num = 5;
let str = '5';
console.log(num === str); // false,严格比较,不会进行隐式类型转换
console.log(num == str); // true,会进行隐式类型转换,将字符串 '5' 转换为数字 5 后比较
优化隐式类型转换的策略
- 数据预处理:在接收外部数据(如用户输入)时,尽早进行类型转换,将其转换为合适的类型。例如:
let userInput = '10';
let numInput = Number(userInput); // 将字符串转换为数字
if (typeof numInput === 'number') {
// 后续操作可以放心使用 numInput
}
- 使用类型安全的函数:一些 JavaScript 内置函数可以安全地进行类型转换。例如
parseInt()
和parseFloat()
用于将字符串转换为数字,JSON.parse()
用于将 JSON 字符串转换为对象。
let str1 = '123abc';
let num1 = parseInt(str1); // num1 为 123,遇到非数字字符停止解析
let jsonStr = '{"name":"John","age":30}';
let jsonObj = JSON.parse(jsonStr); // 将 JSON 字符串转换为对象
通过以上这些方法和策略,可以有效减少因隐式类型转换带来的错误,提升代码的稳定性和可维护性。