值类型与引用类型的区别

数据类型

JavaScript共有八种数据类型:Number, String, Boolean, null, Symbol,undefined, Object, BigInt

其中 Symbol和BigInt是ES6 中新增的数据类型:

  • Symbol代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题。
  • BigInt 是一种数字类型的数据,它可以表示任意精度格式的整数,使用BigInt可以安全地存储和操作大整数,即使这个数已经超出了Number 能够表示的安全整数范围。

基本数据类型

  • 数字(Number):表示整数和浮点数。

  • 字符串(String):表示文本。

  • 布尔值(Boolean):表示真或假。

  • 空值(Null):表示一个空值或者空对象指针。

  • 未定义(Undefined):表示一个未定义的值或变量。

  • 符号(Symbol):表示一种唯一的标识符。

基本数据类型(原始/值),存储在

image-20230419125210881

引用数据类型

  • 对象Object):对象是 JavaScript 中最常见的引用类型,可以表示一组相关的数据和功能,它们是由键值对组成的属性(Property)集合。

  • 数组Array):数组是一种特殊的对象,它可以存储一组有序的值,并使用数字索引进行访问。

  • 函数Function):函数是 JavaScript 中的一等公民,可以作为值进行传递和赋值,也可以作为对象的方法存在。

  • 日期Date):日期对象用于表示日期和时间,可以进行各种日期和时间操作。

  • 正则表达式RegExp):正则表达式对象用于表示一种模式,可以用于匹配字符串。

  • 键值对集合Map 和 WeakMap):Map 对象是一组键值对的有序列表,而 WeakMap 对象也是一组键值对的列表,但它的键必须是对象,并且在该对象被垃圾回收后,对应的键值对也会被自动删除。

  • 集合Set 和 WeakSet):Set 对象是一组唯一值的有序列表,而 WeakSet 对象也是一组唯一值的列表,但它的值必须是对象,并且在该对象被垃圾回收后,对应的值也会被自动删除。

  • lass):类是 ECMAScript 6 中新增的语法,它是一种特殊的函数,可以用于创建对象的模板。

引用数据类型存储在**堆(heap)**中的对象,占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能;

引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。

image-20230419125239055


值类型与引用类型的区别
http://example.com/2023/04/19/07.前端小课堂/04.值类型与引用类型的区别/
作者
Deng ErPu
发布于
2023年4月19日
许可协议