JavaScript的数据类型分为两类:原始类型和对象类型。
- 原始类型 包括:number,string,boolean,underfine,null
通常也叫基本数据类型,这些原始值是不可更改的,原始值的比较是值的比较:只有在它们的值相等时它们才相等。
原始值 存储在栈中(栈数据):
栈内存和栈内存之间的赋值是拷贝(值可能相同但是两块不同的空间),不在一块内存,互不影响。
(原始值在栈上存储;原始值之间传递,传递的是值。)
var a = 111 ;
var b = a ;//拷贝一份a里的值赋给b
//这时b里放的值和a里的值是两个没关系值,换句话说就是副本
a = 222;
console.log(b); //打印111;即b的值不会因a的值改变而改变
console.log(a); //打印222
- 对象类型:object,(js还定义了两种特殊对象:数组array和函数function)
通常将对象称为引用类型,引用值是可变的,它们的比较并非值的比较:即使两个对象包含同样的属性及相同的值,它们也是不相等的。
引用值 存储在堆中(堆数据):
会先在栈内申请空间(var),是引用值就把内容放到堆里,然后在栈内存里放上堆内存的地址,方便找对应堆里的内容,这样把堆栈连起来。所以!引用值之间的拷贝,拷贝过去的是地址(地址指向的是同一块堆空间),是一个值,会互相影响。
(引用值在堆上存储, 地址在栈上存储