JS值类型与引用类型
值类型
string
number
boolean
symbol
underfind
举例
let a=100
let b=a
a=200
console.log(b) // b=100
修改a的值,b不会造成影响
引用类型
object
null
array
function
举例
let a={age:10}
let b=a
b.age=20
console.log(a.age) // b=20
修改b的age,a的age也会改变
分析
在计算机内存中,存在栈,堆的概念。
堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的 。对这个存储区存入的数据,是一种特殊的数据结构。
值类型会存在于栈中。储存形式如图,当修改某一值时并不会改变另外一个值的变化。
引用类型会在堆中申请内存地址,将对象存放至堆中,将堆对应的内存地址存入到栈中,当b=a时就会将a的内存地址赋值给b,当b修改了值就会修改了堆中的值,从而改变a的值。
null 特殊引用类型,指针指向空地址
以上总结了JS中常见的变量类型,为了解决引用类型带来的问题,可以参见后续文章:
下一章:Js基础知识-typeof运算符