宝哥软件园

javascript基础高级_执行环境和范围链深度分析

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

执行环境

执行环境定义了函数可以访问的变量或其他函数,并确定了它们各自的行为。每个执行环境都有一个与之关联的变量对象。

可变对象

环境中定义的所有变量和函数都存储在这个对象中。

全球执行环境

全局执行环境是最外层的执行环境。在网络浏览器中,全局执行环境被视为窗口对象,因此所有全局变量和函数都被创建为窗口对象的属性和方法。

每个函数都有自己的执行环境。

范围链

在环境中执行代码时,会创建变量对象的范围链。

目的:确保有序地访问执行环境可以访问的所有变量和函数。

特性:作用域链的前端总是当前执行代码所在环境的变量对象。如果这个环境是一个函数,它的活动对象就被当作一个可变对象。活动对象最初只包含参数对象。作用域的下一个变量对象来自包含环境,而下一个变量对象来自下一个包含环境。

var color=' bluefunction change COlOr(){ var other COlOr=' red ';函数swapColors(){ var tempColor=other color;anotherColor=colorcolor=tempColor} swapColors();} ChangeColor();该图显示了执行环境。内部环境可以通过范围链访问外部环境,但是外部环境不能访问内部环境中的变量和函数。每个环境都可以搜索范围链来查询变量和函数;但是你不能向下搜索。

没有块级范围声明变量

用var声明的变量会自动添加到最近的环境中。如果省略var关键字,它将被添加到全局环境中。

函数add(num1,num 2){ var sum=num 1 num 2;返回总和;}var result=add(10,10)console . log(sum)

未定义总和

函数add(num1,num 2){ sum=num 1 num 2;返回总和;}var result=add(10,10)console . log(sum)

查询标识符

搜索过程从范围链的前端开始,逐步向上查询与给定名称匹配的标识符,并在找到该标识符时终止搜索。也就是说,如果本地环境中存在同名的标识符,则不会使用位于父环境中的标识符。

var color=' red函数GetColor(){ return color;} console . log(GetColor())

var color=' red函数GetColor(){ var color=' green ';返回颜色;} console . log(GetColor())

参考:《javascript高级程序设计(第三版)》

以上javascript basic advanced _对执行环境和范围链的深入分析是边肖与大家分享的全部内容,希望能给大家一个参考和支持。

更多资讯
游戏推荐
更多+