数据类型如下:
String Number null undefined Boolean Object Symbol Bigint
JS是基于对象的语言除了null和undefined都基于Object
基本数据
基本数据类型存于栈 以栈[变量,值]的形式 它们之间是相互独立的,修改一个变量不会影响其他的变量。需要注意的是 长字符串与双精度的数字是会被放到堆中的(可以f12控制台录制堆内存测试)
基本类型是不可变的(immutable),只有对象是可变的(mutable). 有时我们会尝试“改变”字符串的内容,但在JS中,任何看似对string值的”修改”操作,实际都是创建新的string值。任何方法都无法改变一个基本类型的值
let a = 12;
// (1)创建一个值(基本类型值直接存储在栈内存中即可);
// (2)创建一个变量a ,把其储存到VO(GLOBAL)中;
// (3)让创建的变量a 和创建的值12 关联在一起 => =赋值的操作
let b = a;
// 创建一个变量b,让其和a的值12关联
b = 13;
// (1)创建一个值13,
// (2)让创建的变量b 和创建的值13 关联在一起 => =赋值的操作
引用数据类型
引用数据类型内容存于堆 以栈[变量,堆地址] =》堆[内容]的形式 如果两个变量堆地址相同 那么某个变量修改变量属性时,另一个变量也会被影响
对于引用数组类型重新赋值 相当于改变可堆地址 是不会影响到之前的堆内容的