【JavaScript】基本数据类型有哪些?

55 阅读2分钟

基本数据类型(Primitive Types):

  1. 字符串(String):表示文本数据,例如 "hello"
  2. 数字(Number):表示数值,包括整数和浮点数,例如 423.14
  3. 布尔值(Boolean):表示逻辑值,即 truefalse
  4. 空值(Null):表示一个空值或者未定义的值,只有一个取值 null
  5. 未定义(Undefined):表示未定义的值,只有一个取值 undefined
  6. Symbol:表示唯一的标识符,ES6 引入的新类型,用于创建对象的唯一属性键。
  7. BigInt:在 Javascript 中是一个数字的原始值,它可以表示任意大小的整数。使用 BigInt,你可以安全地存储和操作巨大的整数,甚至超过 Number 的安全整数限制。

引用数据类型(Reference Types):

  1. 对象(Object):表示复杂的数据结构,包括数组、函数、日期、正则表达式等。对象是引用类型的基础,它们存储在堆内存中,通过引用来访问。

区别:

  1. 存储位置

    • 基本数据类型的值直接存储在栈内存中,它们的值是固定的,保存在变量访问的位置。
    • 引用数据类型的值存储在堆内存中,而变量中存储的是对堆内存中实际对象的引用,而不是对象本身。
  2. 赋值与复制

    • 当将一个基本数据类型的值赋给另一个变量时,会复制该值的副本。
    • 当将一个引用数据类型的值赋给另一个变量时,会复制引用,即两个变量指向同一个对象。所以直接访问到的是引用地址。
// 基本数据类型
let a = 5;
let b = a; // b 被赋值为 a 的副本
a = 10;
console.log(a); // 输出 10
console.log(b); // 输出 5,b 的值没有受到 a 的改变影响

// 引用数据类型
let obj1 = { name: "John" };
let obj2 = obj1; // obj2 被赋值为 obj1 的引用
obj1.name = "Alice";
console.log(obj1.name); // 输出 "Alice"
console.log(obj2.name); // 输出 "Alice",因为 obj1 和 obj2 指向同一个对象
  1. 动态性
    • 基本数据类型被称为简单值或者原始值。无法动态添加属性。原始值的大小是固定的。
    • 引用数据类型可以修改其属性或元素。值被称为复杂值或者引用值。可以动态添加属性。可以拆分成多个简单值或者复杂值。引用值在内存中的大小是未知的。
// 基本数据类型的不可变性
let str = "hello";
str[0] = "H"; // 这里没有影响,因为字符串是不可变的
console.log(str); // 输出 "hello"

// 引用数据类型的可变性
let arr = [1, 2, 3];
arr[0] = 0; // 修改数组的元素
console.log(arr); // 输出 [0, 2, 3]