一、JavaScript中变量的类型
1)基本数据类型
String、Number、Boolean、Null、Undefined
2)引用数据类型(除了基本数据类型外的数据都叫引用数据)
Object 对象
Function 函数
Array 数组
二、js变量在内存中的表现(存储)形式
1)存储形式
基本数据类型 直接将值保存在栈区中
引用数据类型 将值保存在栈区中,这个引用地址指向堆区中的内存空间
2)数据发生复制行为
①值传递(基本数据类型)
此时输出结果为:
当b改变时,
此时会输出:
即b的值改变并不会影响到a在栈区的值。
简单来说就是基本数据类型在栈内存中的数据发生复制行为时,系统会自动为新的变量分配一个新值,最后这些变量都是相互独立互不影响。
②引用传递(引用数据类型)
此时会输出结果为 2;
改变o1中n的值为8,检查o中n的值,会得到结果 8
引用类型的复制,同样为新的变量b分配一个新的值,保存在栈内存中,不同的是,这个值仅仅是引用类型的一个地址指针。
他们两个指向同一个值,也就是地址指针相同,在堆内存中访问到的具体对象实际上是同一个
因此改变o1时,o也发生了变化,这就是引用类型的特性。