JS中的执行上下文、词法环境和词法作用域都是什么意思

云网络9个月前 (08-28)建站教程126

1.执行上下文,是JavaScript 执行代码的环境;2.词法环境,是用于保存变量和函数的词法作用域信息;3.词法作用域,指的是在编写代码时定义的变量和函数的作用域。在JS中,每个执行上下文都有自己的变量对象、作用域链、this指向等信息,执行上下文会在代码执行的过程中被创建、执行和销毁。

1.执行上下文

执行上下文(Execution Context)是JavaScript 执行代码的环境。每当JavaScript 执行一段代码时,就会创建一个新的执行上下文,并把它压入执行上下文栈中。执行上下文包含了当前代码的运行状态,如变量、函数、对象等信息。JavaScript 引擎会按照执行上下文栈的顺序依次执行每个上下文。

在JS中,每个执行上下文都有自己的变量对象、作用域链、this指向等信息,执行上下文会在代码执行的过程中被创建、执行和销毁。

  • 执行上下文的创建时机有两种情况:

    • 全局执行上下文:当JS代码首次执行时,会创建全局执行上下文,该执行上下文一直存在于整个代码执行过程中,直到程序结束或页面关闭。

    • 函数执行上下文:当函数被调用时,会创建函数执行上下文,该执行上下文只在函数执行期间存在,当函数执行完毕时,执行上下文会被销毁。

  • 执行上下文的属性包括以下几个方面:

    • 变量对象(Variable Object):用于存储变量和函数声明信息的对象,作用域链和this指向都是在变量对象中定义的。

    • 作用域链(Scope Chain):是一个由多个执行上下文环境组成的链表结构,用于查找变量和函数的作用域。

    • this指向:指向函数执行时的上下文对象。

    • 外部函数引用(Outer Environment Reference):指向当前函数外部的执行上下文环境。

2.词法环境

词法环境(Lexical Environment)是一种数据结构,用于保存变量和函数的词法作用域信息。它记录了在代码中定义的变量和函数,以及它们的作用域链信息,每个词法环境都与一个函数或代码块相关联。

  • 词法环境由两个部分组成:

    • 环境记录(Environment Record):用于存储变量和函数声明的信息,包括变量名、函数名、函数参数等等。

    • 外部词法环境引用(Outer Lexical Environment Reference):指向当前词法环境外部的词法环境,用于形成作用域链。

词法环境与执行上下文密切相关,每个执行上下文都包含一个词法环境,当代码在执行过程中遇到变量或函数时,就会查找当前词法环境中是否存在该变量或函数,如果存在则使用该变量或函数,如果不存在则通过作用域链向外部词法环境查找。

3.词法作用域

词法作用域(Lexical Scope)指的是在编写代码时定义的变量和函数的作用域。JS中的作用域是通过词法作用域来实现的,也就是说,函数的作用域是在函数定义时确定的,而不是在函数调用时确定的。当查找变量或函数时,JS引擎会先在当前词法环境中查找,如果没有找到,就会继续向上查找直到全局词法环境。因此,词法作用域是由代码的结构和嵌套关系决定的,与函数的调用位置无关。

词法作用域的作用是保护变量和函数,避免命名冲突和访问冲突。在JS中,每个函数都有自己的词法作用域,函数内部定义的变量和函数只能在函数内部被访问,无法在外部被访问。同时,由于词法作用域的存在,同名变量和函数也可以在不同的词法环境中存在而不产生冲突。


延伸阅读

JS有哪些应用

JavaScript (JS) 是一种流行的编程语言,它可以用于许多不同的应用,包括:

1.网页开发:JavaScript 可以与HTML 和CSS 一起使用,实现动态交互效果,如表单验证、响应式页面、动画效果等。

2.前端框架:JavaScript 框架,如Angular、React 和Vue.js,可以帮助开发人员快速构建现代、交互式的单页面应用程序(SPA)。

3.后端开发:Node.js 是基于JavaScript 的服务器端框架,可以帮助开发人员构建高性能、可扩展的Web 应用程序和API。

4.游戏开发:JavaScript 可以用于创建2D 和3D 游戏,如Phaser 和Three.js。

5.桌面应用程序:Electron 是一个基于JavaScript、HTML 和CSS 的跨平台桌面应用程序框架,可以用于开发桌面应用程序,如VS Code 和Slack。

6.移动应用程序:使用Apache Cordova 和React Native 等框架,可以使用JavaScript 创建原生移动应用程序。

7.数据可视化:JavaScript 的图表库和可视化工具,如D3.js 和Tableau,可以帮助用户更好地理解和分析数据。


相关文章

年内最大IPO来了!芯片巨头Arm上市:股价一路狂飙

年内最大IPO来了!芯片巨头Arm上市:股价一路狂飙

快科技9月14日消息, Arm控股有限公司正式在纳斯达克全球精选市场挂牌交易。Arm股票代码为ARM”,发行价定为每股51.00美元。截至首日收盘,Arm股价上涨24.69%,报63.59美元。若以收...

计算机语言有哪些

计算机语言有:1.C语言;2.C++语言;3.Java语言;4.C#语言;5.Python语言;6.Go语言;7.PHP语言;8.VisualBasic语言;9.Pascal语言。C语言具备很强的数据...

什么是网站,网站是一个全面的信息处理和展示系统

什么是网站,网站是一个全面的信息处理和展示系统

网站是一个全面的信息处理和展示系统,它通过网络提供信息和服务,为个人、企业、政府等机构提供宣传、交流、交易等功能。网站通常包括首页、栏目页、内容页、用户交互等模块。这种平台的使用,帮助个体或组织在网络...

常见的html5有哪些新特性

常见的html5有以下十个新特性:1、Canvas绘图;2、表单元素;3、语义化标签;4、媒体元素;5、地理定位;6、拖放API;7、Web Worker;8、Web Storage;9、Web So...

美国服务器推荐,哪个运营商好用?

推荐美国加州RAKsmart机房提供美国服务器和VPS主机租用等业务,十多年机房管理经验,拥有较为完善的技术解决方案。RAKsmart直通HE线路,并且与中国电信、联通都是合作单位,服务器速度非常快。...