第四章:变量,作用域,内存问题

151 阅读1分钟

变量可保存两种类型的值

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