隐式转换规则揭秘
JavaScript的类型转换分为显式和隐式两种。显式转换通过Number(), String(), Boolean()等函数实现,而隐式转换常在运算符操作时发生。
// 经典面试题
console.log([] == ![]); // true
console.log({} == !{}); // false
== 与 === 的真相
==会在比较前进行类型转换,而===直接比较值和类型:
console.log(1 == '1'); // true
console.log(1 === '1'); // false
对象到原始值的转换
对象到原始值的转换会调用valueOf()和toString()方法:
let obj = {
valueOf() { return 100; },
toString() { return '200'; }
};
console.log(obj + 1); // 101
常见陷阱与最佳实践
1. 加法运算符的特殊性
console.log(1 + '2'); // '12'
console.log(1 + 2); // 3
2. Boolean转换陷阱
console.log(Boolean([])); // true
console.log(Boolean({})); // true
console.log(Boolean(0)); // false
3. 使用Object.prototype.toString检测类型
console.log(Object.prototype.toString.call([])); // [object Array]
console.log(Object.prototype.toString.call(null)); // [object Null]
掌握类型转换规则能帮助你避免常见bug,写出更加健壮的JavaScript代码。建议在大多数情况下使用===,明确转换意图,并在必要时使用显式转换。

被折叠的 条评论
为什么被折叠?



