Skip to main content

JavaScript 数据类型详解

✅ 核心结论

  • JavaScript 共有 8 种 数据类型。
  • 数据类型分为两大类:原始类型 (Primitive Types)对象类型 (Object Type)
  • 原始类型共有 7 种,对象类型只有 1 种(但包含多种子类型如数组、函数)。

🧠 关键概念

1. 原始类型 (Primitive Types)

这些是存储在栈内存中的简单数据段,具有不可变性。

  • String (字符串):文本数据,使用单/双引号或反引号。
  • Number (数字):统一表示整数和浮点数,包含 NaNInfinity
  • BigInt (大整数):用于处理超出 Number 安全范围的超大整数。
  • Boolean (布尔值):逻辑判断,仅有 truefalse
  • Undefined (未定义):变量已声明但未赋值时的默认状态。
  • Null (空):表示一个刻意设置的空值或“无”的状态。
  • Symbol (符号):ES6 引入,用于创建唯一的属性键,防止属性名冲突。

2. 对象类型 (Object Type)

  • Object (对象):复杂的数据结构,以键值对形式存储。
  • 特殊对象:数组 (Array) 和函数 (Function) 在底层本质上都是对象。

📌 适用场景

  • BigInt:适用于高精度计算或处理后端返回的超长 ID。
  • Symbol:适用于开发库或框架时,定义私有属性或唯一的对象键。
  • Undefined vs Nullundefined 通常由引擎自动分配,而 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)