2-17 介绍js全部数据类型,基本数据类型和引用数据类型的区别


基本数据类型:

string
number
boolean
null
undefined

es6 -> symbol
es10 -> Bigint

引用数据类型:

object
array
正则
date
map
set
...

区别:

  1. 数据在内存中的存储位置不同,基本数据类型存储在栈中, 引用数据类型存储在堆中
  2. 数据附值的不同,基本数据类型在拷贝一份值的副本,附值给一个新的变量,两个变量是互相独立的,他们拥有相同的value, 引入数据类型是引用地址的拷贝,拷贝的引用地址附值给一个新的变量。此时两个变量指向的都是同一个地址,所以你在修改另一个对象的属性,也会影响其他的引用
  3. 参数传递不同,基本数据类型,是直接传值,而引用数据类型,是传递的地址。所以,你在局部函数中修改的一个引用对象,同样会影响外面的原始对象

相关