JavaScript 中有以下数据类型:
基本数据类型(Primitive Data Types):
- Undefined:表示未定义或不存在的值。
- Null:表示空或没有值。
- Boolean:表示 true 或 false。
- Number:表示数字,可以是整数或浮点数。
- String:表示字符串,双引号或单引号括起来的一串字符。
- Symbol(ES6+):表示唯一的标识符,一般用于对象属性的标识。
引用数据类型(Reference Data Types):
- Object:表示复杂的数据结构,可以包含多个键值对。例如:对象、数组、函数等。
- Function:与 Object 类似,也是一种对象类型(Object 的子类型),但是具备了执行的能力。
在 JavaScript 中,除了基本数据类型和 Symbol 类型之外,其他数据类型都属于引用数据类型。基本数据类型的值传递时会将值复制一份,互不影响;而引用数据类型的值传递时,是传递内存地址,多个变量指向同一块内存空间,一个变量改变其所指向的内存地址上的值,其他变量也会相应改变。
面试题:基本数据类型和引用数据类型有何区别
基本数据类型和引用数据类型有以下几点区别:
- 存储方式:基本数据类型的值存储在栈内存中,而引用类型的值存储在堆内存中。
- 复制方式:基本数据类型的赋值和传递时,是值复制,将值从一个变量复制给另一个变量,互不影响;而引用数据类型为引用复制,传递时只复制指针,多个变量指向同一个对象(即同一块内存空间),其中一个变量改变对象的值会影响其他变量的值。
- 可变性:基本数据类型是不可变的,即不能修改已赋值的变量,只能重新赋值新的值;而引用数据类型是可变的,即可以修改对象的属性或方法。
总的来说,基本数据类型和引用类型的区别在于它们的存储、复制和可变性方面的不同。在实际的开发中,我们需要对它们有清晰的认识,以便做好数据处理和传递。