js作用域详解

1.作用域的分类:

a.全局作用域: 全局作用域最大。
eg:一个html页面就是一个全局作用域。
b.局部作用域: 只有函数生成私有作用域。
在这里插入图片描述

2.作用域的三大规则:

a.变量定义规则:
定义变量需有 var 关键词。 eg:var num
或者 function fun(){}
定义作用域时候把这个作用域定义在那个局部,只有当前与后代作用域可以使用。其祖先级作用域不可用。

b.变量使用规则
当需要使用一个变量时:
1.先在自己作用域查找,如果有直接用,停止查找。
2.如果没有,依次向上一级作用于查找。找到使用停止查找。
3. 找到全局都没有,就报错 变量is not defined
c.变量赋值规则
当你需要给一个变量赋值的时候:
1.先在自己作用域内部查找, 如果有, 就给自己作用域内部的变量赋值
2.如果没有, 就向上一级查找, 如果有就给父级的变量赋值
3. 如果还没有, 就继续向上查找
4. 直到全局作用域都没有, 那么就把这个变量定义为全局变量, 再进行赋值

3.作用域小案例

案例1

在这里插入图片描述
我们来分析这个输出的ab分别是什么
实际上var=a=b=100;是三个部分
1.var a 定义
2.a=b 赋值(=赋值从右往左)
3.b=100 赋值

  1. 预解析
    var a

    1. 代码执行的时候
      b = 100 // 标准的变量赋值操作, 根据变量赋值规则, 会把 b 定义成全局变量再赋值
      a = b
      console.log(a) 100
      console.log(b) 100

案例2

在这里插入图片描述
我们来分析

  1. 预解析
    var a
    在浏览器里面声明了一个 a 变量可以使用
  2. 代码执行
    b = 20 // 对于变量 b 来说是变量的赋值
    a = b // 对于变量 b 来说, 是变量的使用, 报错了, 后面就没有代码了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值