JavaScript 数据类型详解
✅ 核心结论
- JavaScript 共有 8 种 数据类型。
- 数据类型分为两大类:原始类型 (Primitive Types) 和 对象类型 (Object Type)。
- 原始类型共有 7 种,对象类型只有 1 种(但包含多种子类型如数组、函数)。
🧠 关键概念
1. 原始类型 (Primitive Types)
这些是存储在栈内存中的简单数据段,具有不可变性。
- String (字符串):文本数据,使用单/双引号或反引号。
- Number (数字):统一表示整数和浮点数,包含
NaN和Infinity。 - BigInt (大整数):用于处理超出 Number 安全范围的超大整数。
- Boolean (布尔值):逻辑判断,仅有
true和false。 - Undefined (未定义):变量已声明但未赋值时的默认状态。
- Null (空):表示一个刻意设置的空值或“无”的状态。
- Symbol (符号):ES6 引入,用于创建唯一的属性键,防止属性名冲突。
2. 对象类型 (Object Type)
- Object (对象):复杂的数据结构,以键值对形式存储。
- 特殊对象:数组 (Array) 和函数 (Function) 在底层本质上都是对象。
📌 适用场景
- BigInt:适用于高精度计算或处理后端返回的超长 ID。
- Symbol:适用于开发库或框架时,定义私有属性或唯一的对象键。
- Undefined vs Null:
undefined通常由引擎自动分配,而null常由开发者手动赋值,表示该处应有值但目前为空。
⚠️ 常见误区
- typeof null:执行
typeof null会返回"object",这是 JavaScript 语言设计之初留下的历史遗留 Bug,并不代表 null 是对象。 - 数值精度:Number 类型不区分整型和浮点型,所有数字均以 64 位浮点数存储。
- NaN 的性质:
NaN(Not a Number) 属于 Number 类型,通常在数学运算失败时产生。
✅ 示例
// 原始类型
let str = "Hello"; // String
let num = 100; // Number
let isReady = true; // Boolean
let emptyValue = null; // Null
let notDefined; // Undefined
let bigIntNum = 100n; // BigInt
let uniqueKey = Symbol(); // Symbol
// 对象类型
let user = { name: "AI", age: 1 }; // Object
let list = [1, 2, 3]; // Array (Object)
function greet() {} // Function (Object)