📜  JavaScript 中的原始和非原始数据类型(1)

📅  最后修改于: 2023-12-03 15:31:40.509000             🧑  作者: Mango

JavaScript 中的原始和非原始数据类型

JavaScript 数据类型分为两类:原始数据类型和非原始数据类型(对象类型)。

原始数据类型

原始数据类型是指不能被改变的数据类型。JavaScript 中有 6 种原始数据类型:

  1. Number(数字):整数或浮点数,如 53.14
  2. String(字符串):文本,如 "Hello World"
  3. Boolean(布尔):表示真或假的值,即 truefalse
  4. null(空):表示空值,即 null
  5. undefined(未定义):表示未定义的值,即 undefined
  6. Symbol(符号):表示唯一的值,常用于对象的属性名,如 let sym = Symbol('foo')

原始数据类型都是不可变的,不允许修改其值。

以下是创建和使用原始数据类型的示例:

let num = 123;
let str = "Hello";
let bool = true;
let emptyVal = null;
let undefVal = undefined;
let sym = Symbol('foo');
非原始数据类型(对象类型)

非原始数据类型是指可以被改变的数据类型,其通常表示为一种对象。JavaScript 中有 3 种非原始数据类型:

  1. Object(对象):表示一组相关值的集合,可以是属性、方法或任何组合。如 {name: '张三', age: 18}
  2. Array(数组):表示值的有序集合,可以通过索引访问。如 [1, 2, 3]
  3. Function(函数):是 JavaScript 的一等公民,可以被赋值给变量,可以作为参数传递给其他函数,也可以从函数中返回。如 function sum(a, b) { return a + b; }

非原始数据类型可以包含各种数据,包括原始数据类型、对象类型和其他复杂的数据类型,如日期和正则表达式等。

以下是创建和使用非原始数据类型的示例:

let obj = {name: '张三', age: 18};
let arr = [1, 2, 3];
function sum(a, b) { return a + b; }
引用类型

对象类型和字符串类型被称为“引用类型”,意味着它们的值被存储在堆内存中,而不是变量所在的栈内存中。因此,在将引用类型传递给函数或分配给其他变量时,传递的是其引用(指针),而不是实际的值。

let obj1 = {name: '张三', age: 18};
let obj2 = obj1;
obj2.name = '李四';
console.log(obj1.name); // 输出 "李四"

在上面的示例中,obj1obj2 都引用了同一个对象 {name: '张三', age: 18}。因此,当我们修改 obj2.name 时,实际上也会修改 obj1.name,因为它们指向同一个对象。