值类型和引用类型的区别

28 阅读2分钟

值类型

  • 数字(Number):表示整数和浮点数。
  • 字符串(String):表示文本。
  • 布尔值(Boolean):表示真或假。
  • 空值(Null):表示一个空值或者空对象指针。
  • 未定义(Undefined):表示一个未定义的值或变量。
  • 符号(Symbol):表示一种唯一的标识符。

代码示例

image.png

值类型数据的存储模式

栈中存的是

image.png

引用类型

  • 对象Object):对象是 JavaScript 中最常见的引用类型,可以表示一组相关的数据和功能,它们是由键值对组成的属性(Property)集合。
  • 数组Array):数组是一种特殊的对象,它可以存储一组有序的值,并使用数字索引进行访问。
  • 函数Function):函数是 JavaScript 中的一等公民,可以作为值进行传递和赋值,也可以作为对象的方法存在。
  • 日期Date):日期对象用于表示日期和时间,可以进行各种日期和时间操作。
  • 正则表达式RegExp):正则表达式对象用于表示一种模式,可以用于匹配字符串。
  • 键值对集合Map 和 WeakMap):Map 对象是一组键值对的有序列表,而 WeakMap 对象也是一组键值对的列表,但它的键必须是对象,并且在该对象被垃圾回收后,对应的键值对也会被自动删除。
  • 集合Set 和 WeakSet):Set 对象是一组唯一值的有序列表,而 WeakSet 对象也是一组唯一值的列表,但它的值必须是对象,并且在该对象被垃圾回收后,对应的值也会被自动删除。
  • lass):类是 ECMAScript 6 中新增的语法,它是一种特殊的函数,可以用于创建对象的模板。

引用类型的存储模式

栈中存的是堆中的一个地址.

image.png