一、动态类型的双面性
JavaScript是弱类型动态语言,类型在运行时确定:
let foo = 42; // Number
foo = "bar"; // String - 合法但需谨慎
二、基本类型(Primitive Types)
1. Undefined vs Null
let a; // undefined
let b = null; // null
console.log(typeof null); // "object" - 历史遗留坑
2. Symbol的唯一性
const sym1 = Symbol('key');
const sym2 = Symbol('key');
console.log(sym1 === sym2); // false - 永远唯一
3. BigInt大数解决方案
const bigNum = 9007199254740991n;
console.log(bigNum + 1n); // 9007199254740992n (安全计算)
三、对象类型(Object Type)
引用特性与深度克隆难题:
const obj1 = { a: 1 };
const obj2 = obj1;
obj2.a = 2;
console.log(obj1.a); // 2 - 联动修改!
// 深度克隆解决方案
const deepClone = JSON.parse(JSON.stringify(obj1));
四、类型转换奥秘
== 与 === 的经典陷阱:
console.log([] == ![]); // true - 震惊!
console.log(null == undefined); // true
掌握数据类型是理解JavaScript执行机制的基础,建议在日常开发中始终使用 === 并明确进行类型转换,避免隐式转换带来的不可预知行为。

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



