JavaScript 中有以下数据类型:

基本数据类型(Primitive Data Types):

  • Undefined:表示未定义或不存在的值。
  • Null:表示空或没有值。
  • Boolean:表示 true 或 false。
  • Number:表示数字,可以是整数或浮点数。
  • String:表示字符串,双引号或单引号括起来的一串字符。
  • Symbol(ES6+):表示唯一的标识符,一般用于对象属性的标识。

引用数据类型(Reference Data Types):

  • Object:表示复杂的数据结构,可以包含多个键值对。例如:对象、数组、函数等。
  • Function:与 Object 类似,也是一种对象类型(Object 的子类型),但是具备了执行的能力。

在 JavaScript 中,除了基本数据类型和 Symbol 类型之外,其他数据类型都属于引用数据类型。基本数据类型的值传递时会将值复制一份,互不影响;而引用数据类型的值传递时,是传递内存地址,多个变量指向同一块内存空间,一个变量改变其所指向的内存地址上的值,其他变量也会相应改变。

面试题:基本数据类型和引用数据类型有何区别

基本数据类型和引用数据类型有以下几点区别:

  • 存储方式:基本数据类型的值存储在栈内存中,而引用类型的值存储在堆内存中。
  • 复制方式:基本数据类型的赋值和传递时,是值复制,将值从一个变量复制给另一个变量,互不影响;而引用数据类型为引用复制,传递时只复制指针,多个变量指向同一个对象(即同一块内存空间),其中一个变量改变对象的值会影响其他变量的值。
  • 可变性:基本数据类型是不可变的,即不能修改已赋值的变量,只能重新赋值新的值;而引用数据类型是可变的,即可以修改对象的属性或方法。

总的来说,基本数据类型和引用类型的区别在于它们的存储、复制和可变性方面的不同。在实际的开发中,我们需要对它们有清晰的认识,以便做好数据处理和传递。