前端基础进阶(四):作用域与作用域链

本文详细探讨了JavaScript中的词法环境、作用域和作用域链的概念。词法环境,即作用域,是在编写代码时就已经确定的规则,用于管理变量查找。JavaScript有全局作用域和函数作用域。作用域链则是在执行过程中动态变化的变量对象的索引路径,确保有序访问符合访问权限的变量和函数。通过示例和图示,解释了作用域链的工作原理,帮助读者深入理解这一重要概念。
摘要由CSDN通过智能技术生成

攻克闭包难题

文章最新内容已迁移至公众号 不知非攻,后续维护也在公众号里修正,欢迎关注。

作用域与作用域链本应该是一个非常简单的概念。可是在近两年多的留言中,我发现这些概念反而成为了大多数人想不明白的点,而感到困惑的原因在于,别的文章里,常常会提到词法作用域,词法分析等概念,到底是什么东西?好像跟我说的有一点不一样,但又不知道哪里不对?

为了避免接下来更多的同学造成同样的困扰,我写了一篇名为(v8引擎是如何工作的)文章,为大家分析JS的工作原理。后续会整理进入基础进阶系列文章。大家可以随时阅读。

词法环境(Lexical Environments)

官方规范对词法环境的说明是:词法环境(Lexical Environments)是一种规范类型,用于根据ECMAScript代码的词法嵌套结构来定义标识符与特定变量和函数的关联。

官方就是爱把简单的东西复杂化,专业!

通俗来说,词法环境就是一套约定好的规则。我们写代码,应该按照这个规则来。JS引擎对JS源码进行词法分析,也是按照这个规则来。

**因此,词法环境,在我们写代码的时候就已经确定了。**明白了这一点,对于区分词法环境与执行上下文有非常关键的意义。

词法环境,其实就是作用域,有的人叫词法作用域等等,叫法都不是重点,重点是,不要读太多杂乱的文章,反而搞得自己更迷糊

得出结论:

一、在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理JS引擎如何在当前作用域以及嵌套的子作用域中根据标识符名称进行变量查找。

这里的标识符,指的是变量名或者函数名

二、JavaScript中有全局作用域与函数作用域(因为eval我们平时开发中几乎不会用到它,这里不讨论)。

现在,大家知道词法环境,作用域和执行上下文的区别了吗?

更多的关于JS引擎是如何处理JS代码的,大家可以参考(V8引擎是如何工作的)一文

除此之外,一个词法环境,由环境记录(Environment Records)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值