变量可保存两种类型的值
1,基本类型
undefined,null,boolean,string,number
2,引用类型
object
3,具有的特点
*基本类型在内存中,占用固定大小空间,保存在栈内存中;
*从一个变量向另一个变量复制基本类型值,会创建一个值的副本;
*引用类型的值是对象,保存在堆内存中;
*引用类型的变量包含的不是对象本身,是一个指向该对象的指针;
*从一个变量向另一个变量复制引用类型值,复制的是指针,都指向同一个对象;
*确定一个值是那种基本类型使用:typeof;引用类型使用:instanceof;
4,执行环境
*全局环境+函数局部环境
*进入新执行环境,会创建一个用于搜索变量和函数的作用域链;
*局部环境有权访问作用域中的变量,也可以访问父级环境乃至全局;
*全局环境只能访问全局定义的变量和函数
*变量的执行环境有助于确定何时释放内存;
5,回收机制
*离开作用域的值被自动标记为可以回收,在垃圾收集期间被删除;
*‘标记清除’主流的垃圾收集算法;
*‘引用计数’,不再使用;
*代码中存在循环引用,引用计数会导致问题;
*解除变量的引用,消除循环引用现象,对垃圾收集也有好处;