解释 JavaScript 中的作用域和作用域链的概念。

简介: 解释 JavaScript 中的作用域和作用域链的概念。

在 JavaScript 中,作用域是指变量和函数可访问的范围。它是静态的,在编写代码时就确定了。作用域具体表现形式为一段特定的代码,在该代码段中的变量和函数是封闭的、独立的,这样变量才不会泄露、污染。

JavaScript 中的每个函数都是一个对象,对象中有些属性可以访问,有些属性不可以访问,其中scope就是其中一个。scope指的就是作用域,其中存储了运行期上下文的集合。运行期上下文是当函数执行时,会创建的一个内部对象。一个执行期上下文定义了一个函数执行时的环境,函数每次执行时对应的执行上下文都是独一无二的,所以多次调用一个函数会导致创建多个执行上下文,当函数执行完毕,执行上下文被销毁。

作用域链是由多个上下级关系的作用域形成的链,它的方向是从下向上(从内到外)的查找变量时就是沿着作用域链来查找。查找一个变量的查找规则为:在当前作用域下的执行上下文中查找对应的属性,如果有直接返回,否则进入下一步;在上一级作用域的执行上下文中查找对应的属性,如果有直接返回,否则进入下一步;再次执行上一步相同操作,直到全局作用域,如果还找不到就抛出找不到的异常。

目录
相关文章
|
22天前
|
存储 JavaScript 前端开发
解释 JavaScript 中的作用域和作用域链的概念。
【4月更文挑战第4天】JavaScript作用域定义了变量和函数的可见范围,静态决定于编码时。每个函数作为对象拥有`scope`属性,关联运行期上下文集合。执行上下文在函数执行时创建,定义执行环境,每次调用函数都会生成独特上下文。作用域链是按层级组织的作用域集合,自内向外查找变量。变量查找遵循从当前执行上下文到全局上下文的顺序,若找不到则抛出异常。
22 6
|
22天前
|
JavaScript 前端开发 Shell
深入学习JavaScript系列——作用域和作用域链
深入学习JavaScript系列——作用域和作用域链
|
7月前
|
存储 自然语言处理 JavaScript
JavaScript变量和作用域:解密编程中的灵魂
JavaScript是一种广泛应用于网页开发的脚本语言。在JavaScript中,变量和作用域是非常重要的概念,它们决定了代码中数据的存储和访问方式。本文将介绍JavaScript中的变量和作用域,并提供一些示例以帮助读者更好地理解。
45 0
|
8月前
|
JavaScript 前端开发
JavaScript(函数,作用域和闭包)(下)
JavaScript(函数,作用域和闭包)
|
10月前
|
自然语言处理 JavaScript 前端开发
JavaScript 实践+理论(总结篇):作用域、闭包、this、对象原型(上)
JavaScript 实践+理论(总结篇):作用域、闭包、this、对象原型
|
10月前
|
自然语言处理 JavaScript 前端开发
【深度剖析】JavaScript中块级作用域与函数作用域
【深度剖析】JavaScript中块级作用域与函数作用域
|
10月前
|
存储 自然语言处理 JavaScript
如何理解JavaScript中的执行上下文
如何理解JavaScript中的执行上下文
62 0
|
存储 自然语言处理 前端开发
JavaScript基础系列(4):如果你不理解作用域和作用域链,欢迎你点进来看看
作用域其实就是存放变量和函数的地方,全局有全局作用域,全局作用域中存放了全局变量和全局函数。每个函数也有自己的作用域,函数作用域中存放了函数中定义的变量和函数。在ES6之前,ES的作用域只有两种:全局作用域和函数作用域。ES6时支持了块级作用域。
72 0
|
JavaScript 前端开发 Java
JavaScript闭包从概念、原理到应用
闭包的概念:有权访问另一个函数作用域中的变量的函数;一般情况就是在一个函数中包含另一个函数。
100 0
|
存储 自然语言处理 前端开发
重新学习 JavaScript 中的 作用域和闭包
重新学习 JavaScript 中的 作用域和闭包

热门文章

最新文章