作用域分类

全局作用域:

  • window对象下的
  • 是最大的作用域
  • 其他的作用域 都必须在全局作用域下

局部作用域:

  • 因为函数体中有声明的变量 函数在执行的时候,该变量运行需要一个环境,所以就产生了局部作用域
  • 当函数执行完毕的时候,看子作用域是否有需要使用 他声明的变量 如果没有则消失,则作用域销毁 变量消失(实际为变量赋值null),如果用到了 就形成了闭包 作用域会保存下来
  • 函数的执行环境 在栈内存中 每次执行都是开辟一个空间 执行完毕消失
  • 在函数局部作用域中最大的对象叫 Ao对象, Ao对象会随着作用域的存在而存在
  • 所以 每个作用域中都会有一个最大的对象, 局部作用域为Ao对象 全局为go对象
  • 每个对象当中 都隐藏this 默认指向该对象(抽象的对象)

块级作用域

1: let声明的变量 因为{} 是一个代码块 在{}内部 let只能在自己的{}中进行运行,外部不能访问 所以是块级作用域 只看{} 不看函数

  • 2: 块级作用域也遵循作用域规则,小作用域中可以使用大作用域中的变量
  • 3: for 循环中 let 千万注意! ??? 不是一个块级域
  • 案例如下:
for(let i = 0; i<3; i++) {
    setTimeOut(function(){
        console.log(i)//0 1 2 不是 333
    },1000)
}
for(var i = 0; i<3; i++) {
    //循环先执行  异步后执行  循环执行完毕 i = 3
    setTimeOut(function(){
        console.log(i)//3 3 3  使用是全局变量 i=3
    },1000)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值