原始值和引用值
一、基本概念
1、原始值
指原始类型的值,也叫基本类型
例如:Number
、String
、 Boolean
、Null
、Undefined
存储在 栈(stack),值存储在变量访问的位置
2、引用值
指引用类型的值
例如:Object
、Function
、Array
、Date
、RegExp
...
存储在 堆(heap),值是一个指针,指向存储对象的内存处
二、原始值和引用值的不同
1、赋值方式
原始值 是以“值”
的拷贝方式赋值,值是不可变
的
引用值 是以“引用”
的拷贝方式赋值,值是可变
的
2、比较方式
原始值是 “值” 的比较(即使数据类型不同[隐式转换],也可以进行值的比较)
// 原始值
var a = 1;
var b = true;
console.log( a==b); //true
console.log( a===b); //false
引用值是 “引用” 的比较(堆内存中不同的对象)
// 原始值
var obj1 = {};
var obj2 ={};
console.log( obj1==obj2); //false ==只 比较值
console.log( obj1==obj2); //false === 不仅比较值,还比较数据类型