一、原始值
原始值:
String <字符串>
Boolean <布尔>
Number <数字>
Undefined < (声明不赋值)undefined:没有定义的 >
Null <"空"表站位>
Symbol <符号类型>
原始值特点:不可改变的原始值,不可以有属性和方法 eg:“内存”
原始值储存在 stack(栈)内存里 原始值是拷贝内容;
例:
var a = 10;
var b = a;
a = 20;
console.log(b); //10
二、引用值
//以下是常用的引用值
array <数组类型>
Object <对象类型>
function <function类型>
RegExp <正则表达式>
date <日期>
......
引用值可以有属性和方法
引用值储存在 heap(堆)内存里,引用值拷贝的是地址;
例:
var arr=[10];
var arr1=arr;
arr.push(3);
console.log(arr1); //10,3
另外JavaScript由值决定变量的类型
总结:基本数据类型的数据直接存储在栈中;而引用数据类型的数据存储在堆中,在栈中保存数据的引用地址指向的是对应的数据,以便快速查找堆内存中的对象。
栈内存是自动分配内存的,而堆内存是动态分配内存的,不会自动释放,所以每次使用完对象的时候都要把它设置为null,从而减少无用的内存消耗。