作用域及作用域链

文章详细阐述了JavaScript中的三种作用域:局部作用域(函数内部),全局作用域(所有脚本和函数可访问),以及ES6引入的块级作用域。作用域决定了变量的可见性。作用域链则是在查找变量时,从当前作用域逐级向上查找直到全局作用域的过程。块级作用域解决了内存变量覆盖和循环变量泄露等问题。
摘要由CSDN通过智能技术生成

一、作用域

在 JavaScript 中作用域类型:

1.局部作用域:只能在函数内部访问

函数内部定义的变量从函数外部是不可见的 (也就是说 子能用父)

2.全局作用域:网页的所有脚本和函数都能够访问

函数外部定义的变量,函数内部是可以调用的(父不能用子)

每个函数创建时都会产生作用域

作用域决定了变量的可见性 (就是在哪能用 在哪不能用)

作用域:变量生效的范围

3.块级作用域

是一个语句,将多个操作封装在一起,通常是放在一个大括号里,没有返回值。

在ES6之前,函数只能在全局作用域和函数作用域中声明,不能在块级作用域中声明。没有块级作用域导致很多场景不合理

内存变量可能覆盖外层变量

用来计数的循环变量泄露为全局变量

ES6中的块级作用域:
1、允许块级作用域任意嵌套,外层作用域无法读取内层作用域的变量

2、内层作用域可以定义外层作用域的同名变量

3、不需要立即执行匿名函数
        立即执行函数

二、作用域链

当查找变量的时候,会先从当前上下文的变量对象中查找

没找到,会从父级执行上下文的变量中查找,一直找到全局上下文的变量对象,也就是全局对象

这样由多个执行上下文的变量对象构成的链表就叫做作用域链

说人话就是多个作用域嵌套从而产生了作用域链

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值