变量作用域

2018-06-03  本文已影响0人  787518d9b65a

变量

基本类型值指简单的数据段,引用类型值值得是那些可能由多个值构成的对象。引用类型值是保持在内存中的变量。JS不允许直接访问内存中的位置,复制保存着对象的某个对象时,操作的是对象的引用。为对象添加属性时,操作的是实际的对象。

只能给引用类型值动态地添加属性。

instanceof操作符可以检测引用类型。如果是给定引用类型的实力,则会返回true。

执行环境及作用域

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

全局执行环境被认为是window对象。所有全局变量和函数都是作为window对象的属性和方法创建的。全局执行环境直到环境被销毁后,所有变量和函数定义也随之创建。

每个函数都有一个执行环境。当代码在一个环境中执行是,会创建变量对象的一个作用域链,保证对执行环境有权访问的所有变量和函数的有序访问。作用域的前端,始终都是当前执行的代码所在环境的变量对象。这个环境是函数,则其活动对象作为变量对象。活动对象最开始只包含arguments对象。而作用链中的下一个对象则向外延伸。

内部环境可以通过作用链访问所有的外部环境,外部环境不能访问内部环境中的任何变量和函数。

延长作用链域

var语句和with语句会接近最接近的环境中。查询时,先从函数内部查找,再往外延伸,如果在局部定义中找到,则搜索会停止。

垃圾收集

上一篇下一篇

猜你喜欢

热点阅读