javascript作用域和作用域链

本文详细阐述了JavaScript中的两种作用域:全局作用域和函数作用域。解释了自由变量的概念,以及如何通过作用域链来查找变量。了解这些概念对于掌握JavaScript的变量隔离和内存管理至关重要。

js中只有两种作用域:全局作用域和函数作用域(局部作用域)。

全局作用域只有一个就不必多说了。

函数作用域:创建一个函数就会创建一个函数作用域,相当于创建了一个独立空间,这个空间可以问外部作用域的变量;但是外部作用域不能访问函数作用域的变量。

作用域的最大的用途就是隔离变量,不同作用域中的同名变量互不影响。

在这里先说一个概念:自由变量

什么是自由变量?

下图中,foo中的a,bar中的b,都没有在自己的作用域中声明,像这种变量称之为自由变量。

如上图,全局代码和foo、bar两个函数都会形成一个作用域。而且,作用域有上下级的关系,上下级关系的确定就看函数是在哪个作用域下创建的。例如,foo作用域下创建了bar函数,那么“foo作用域”就是“bar作用域”的父级作用域。

自由变量的访问需要向父级的作用域去寻找,如果父级作用域中找到了就取值并结束,如果没有找到且父级作用域没有找到,那就继续向上找直到全局作用域,如果全局作用域也没有那就取undefined并结束;而自由变量取值的过程中,将作用域串成了一条链子,即作用域链。

 

转载于:https://www.cnblogs.com/webchigan/p/10116586.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值