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

基本类型和访问类型的值:

  ECMAscript的变量可能包含两种不同数据类型的值。基本类型值和引用类型值。基本类型指的是简单的数据段,而引用类型指的是可能由多个值构成的对象。

  动态的属性:对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法。

  复制变量值:引用类型是浅复制。

  传递参数:传递引用参数时是浅复制。

  检测类型:可以使用:typeof()函数。当变量是一个对象或null时,返回“object”;

        常用:instanceof操作符检测值为哪种引用类型:resule = variable instanceof constructor。如果变量是给定引用类型(常用object判断variable是否为对象)的实例返回true。

执行环境:

  执行环境是javascript中最为重要的一个概念。执行环境定义了变量或者函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。

  全局执行环境是最外围的一个执行环境。在Web浏览器中,全局执行环境被认为是window对象,因此所有全局变量和函数都是作为window对象的属性和方法创建的。

  当代码在一个环境中执行时,会创建变量对象的一个作用域链。

  javascript没有块级作用域:也就是说,if、for等语句中定义的变量会添加到当前的执行环境中。

    声明变量:使用var声明的变量会自动添加到最接近的环境中(注意javascript没有块级作用域的概念)。在函数内部,最接近的环境就是函数的局部环境,在with语句中,最接近的环境是函数环境。

           如果未使用var声明变量,则该变量自动添加到全局变量中。

    查询标识符:搜索过程从作用域链的前段开始,向上逐级查询与给定名匹配的标识符。找到则停止查询,如果在全局环境中也找不到,则意味着该变量尚未声明。

垃圾收集:

  标记清除:javascript中最常用的垃圾收集方式。当变量进入环境(例如,在函数中声明一个变量)时,就将这个变量标记为“进入环境”,而当变量离开环境,就将标记为“离开环境”。

  引用计数:循环引用会是永远不为0,所以基本都被替换。

  性能问题:确定垃圾收集的时间间隔是一个特别影响浏览器性能的问题。

 

posted on 2015-12-06 03:17  heart_Craft  阅读(108)  评论(0编辑  收藏  举报

导航