JavaScript中datatypes的两个基本组
在 JavaScript 中,数据类型(Data Types)可以分为两大类:原始类型(Primitive Types) 和 引用类型(Reference Types)。以下是它们的详细说明及区别:
1. 原始类型(Primitive Types)
原始类型是 JavaScript 中最基本的数据类型,它们的值直接存储在变量中。原始类型是不可变的(Immutable),即它们的值不能被修改,只能被替换。
常见的原始类型:
| 类型 | 描述 | 示例 |
|---|---|---|
string | 字符串 | "Hello", 'World' |
number | 数字(整数或浮点数) | 42, 3.14 |
boolean | 布尔值(true 或 false) | true, false |
null | 空值 | null |
undefined | 未定义的值 | undefined |
symbol | 唯一标识符(ES6 新增) | Symbol("id") |
bigint | 大整数(ES2020 新增) | 123n |
特点:
- 不可变性:原始类型的值不能被修改。
- 按值传递:在赋值或传递时,复制的是值本身。
- 存储位置:存储在栈内存中。
示例:
let a = 10;
let b = a; // b 是 a 的副本
a = 20;
console.log(b); // 输出: 10(b 的值未受影响)
2. 引用类型(Reference Types)
引用类型是复杂的数据类型,它们的值存储在堆内存中,变量存储的是指向堆内存的引用(地址)。引用类型是可变的(Mutable),即它们的值可以被修改。
常见的引用类型:
| 类型 | 描述 | 示例 |
|---|---|---|
object | 对象 | { name: "Alice", age: 25 } |
array | 数组 | [1, 2, 3] |
function | 函数 | function() {} |
date | 日期对象 | new Date() |
regexp | 正则表达式 | /abc/ |
特点:
- 可变性:引用类型的值可以被修改。
- 按引用传递:在赋值或传递时,复制的是引用(地址)。
- 存储位置:存储在堆内存中。
示例:
let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 和 obj1 指向同一个对象
obj1.name = "Bob";
console.log(obj2.name); // 输出: Bob(obj2 的值被修改)
3. 原始类型与引用类型的区别
| 特性 | 原始类型 | 引用类型 |
|---|---|---|
| 存储方式 | 直接存储值 | 存储引用(地址) |
| 可变性 | 不可变 | 可变 |
| 赋值/传递 | 按值传递(复制值) | 按引用传递(复制引用) |
| 存储位置 | 栈内存 | 堆内存 |
| 比较方式 | 比较值是否相等 | 比较引用是否相等 |
示例:
// 原始类型比较
let a = 10;
let b = 10;
console.log(a === b); // true(值相等)
// 引用类型比较
let obj1 = { name: "Alice" };
let obj2 = { name: "Alice" };
console.log(obj1 === obj2); // false(引用不同)
4. 类型检测
- 原始类型:使用
typeof检测。console.log(typeof "Hello"); // "string" console.log(typeof 42); // "number" console.log(typeof true); // "boolean" console.log(typeof null); // "object"(历史遗留问题) console.log(typeof undefined); // "undefined" console.log(typeof Symbol("id")); // "symbol" console.log(typeof 123n); // "bigint" - 引用类型:使用
typeof检测对象和函数,使用instanceof检测具体类型。console.log(typeof {}); // "object" console.log(typeof []); // "object" console.log(typeof function() {}); // "function" console.log([] instanceof Array); // true console.log({} instanceof Object); // true
总结
JavaScript 中的数据类型分为两大类:
- 原始类型:
string、number、boolean、null、undefined、symbol、bigint。 - 引用类型:
object、array、function、date、regexp。
理解它们的区别对于掌握 JavaScript 的内存管理、赋值行为和类型检测至关重要。
更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github