当前位置: 首页 > news >正文

2023/1/15 JS-作用域与作用域链

1 作用域

理解 - 就是一块"地盘", 一个代码段所在的区域,它是静态的(相对于上下文对象), 在编写代码时就确定了
分类:

  1. 全局作用域
  2. 函数作用域

没有块作用域(ES6有了) -->(java语言也有)

    if (true) {
        var a = 3
    }
    console.log(a); // 3

作用: 隔离变量,不同作用域下同名变量不会有冲突

<script>
    var a = 100;

    function fun() {
        var a = 200;
        console.log(a);
    }

    fun() // 200
</script>

2 作用域与执行上下文的区别与联系

区别1:

  • 全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了,而不是在函数调用时。
  • 全局执行上下文环境是在全局作用域确定之后,js代码马上执行之前创建
  • 函数执行上下文是在调用函数时, 函数体代码执行之前创建

区别2:

  • 作用域是静态, 只要函数定义好了就一直存在,且不会再变化
  • 执行上下文是动态的,调用函数时创建, 函数调用结束时就会自动释放

联系:

  • 执行上下文是从属于所在的作用域
  • 全局上下文环境–>全局作用域
  • 函数上下文环境–>对应的函数作用域
    在这里插入图片描述

3 作用域链

  • 多个上下级关系的作用域形成的链,它的方向是从下向上的(从内到外)
  • 查找变量时就是沿着作用域链来查找的

查找一个变量的查找规则:

在当前作用域下的执行上下文中查找对应的属性, 如果有直接返回, 否则 在上一级作用域的执行上下文中查找对应的属性, 如果有直接返回, 否则
。。。。直到全局作用域, 如果还找不到就抛出找不到的异常

相关文章:

  • 网站访客qq抓取/谷歌广告投放
  • wordpress 主题 knowhow/广东深圳疫情最新
  • 外贸企业网站管理系统/百度推广账户优化
  • 景安搭建wordpress/推广网站的方法
  • 南安网站设计/今日热搜榜排名
  • 南昌旅游网站建设方案/凡科建站登录官网
  • 从0到1完成一个Node后端(express)项目(三、写接口、发起请求)
  • 一起Talk Android吧(第四百七十回:自定义View实例一:带圆圈的文字)
  • 【互联网大厂机试真题 - 荣耀】计算机容量
  • 如何准确测试相位噪声
  • BIGEMAP APP离线卫星地图数据应用
  • 从0到1【建站:AWS+Ubuntu+Python+Django+uwsgi+nginx+ssl】
  • Java安装详细教程
  • GaussDB(DWS)数据库的数据迁移实操【玩转PB级数仓GaussDB(DWS)】
  • 低代码平台助力汽车行业构筑新基建
  • java调用python文件的几种方式
  • Linux 中断子系统(八):中断处理流程
  • 从零开始学习Linux