1. 分类

  • 全局作用域
  • 函数作用域
  • 没有块作用域(ES6有了)

2. 作用

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

3.作用域和执行上下文的区别

  1. 区别1
  • 全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了。而不是在函数调用时
  • 全局执行上下文环境是在全局作用域确定之后, js代码马上执行之前创建
  • 函数执行上下文是在调用函数时, 函数体代码执行之前创建
  1. 区别2
  • 作用域是静态的, 只要函数定义好了就一直存在, 且不会再变化
  • 执行上下文是动态的, 调用函数时创建, 函数调用结束时就会自动释放
  1. 联系
  • 执行上下文(对象)是从属于所在的作用域
  • 全局上下文环境==>全局作用域
  • 函数上下文环境==>对应的函数使用域

四,作用域链

  1. 理解
  • 多个上下级关系的作用域形成的链, 它的方向是从下向上的(从内到外)
  • 查找变量时就是沿着作用域链来查找的
  1. 查找一个变量的查找规则
  • 在当前作用域下的执行上下文中查找对应的属性, 如果有直接返回, 否则进入2
  • 在上一级作用域的执行上下文中查找对应的属性, 如果有直接返回, 否则进入3
  • 再次执行2的相同操作, 直到全局作用域, 如果还找不到就抛出找不到的异常
    *例题1:
 var x = 10;function fn() {console.log(x);}function show(f) {var x = 20;f();}show(fn);   //输出的是10

需要特别理解的是这句话:作用域在函数定义时就已经确定了。而不是在函数调用时,也就是说函数在调用时的嵌套它可不管,它只看你写的代码的结构来判断作用域

从代码的结构看,这两个函数是并列的!而不看函数执行时谁调用谁!所以fn()查找x时往外找,就找到x=10了。

例题二:

 var fn = function () {console.log(fn)}fn()var obj = {fn2: function () {console.log(fn2)        //作用域看中括号!包起来的是一个域,这里面可找不到fn2,就只能向外找//可是外部也找不到!因为外部只能看到obj,看不到obj的属性和方法//console.log(this.fn2)}}obj.fn2()

js高级学习笔记(b站尚硅谷)-13-作用域链相关推荐

  1. 燕十八老师 JS高级学习笔记 之作用域链

    作用域 在JS中,函数嵌套是非常普遍的,在函数嵌套中:对变量是如何寻找的? 答: 首先在函数内寻找,寻找不到,则在外层寻找 ...直到..全局(window)区域. // 例子1var c=5;fun ...

  2. [JS]JavaScript基础学习笔记(黑马pink+尚硅谷李立超)

    文章目录

  3. JS高级学习笔记(6)- 事件循环

    参考文章:深入理解JS引擎的执行机制        JavaScript 异步.栈.事件循环.任务队列 我的笔记:ES系列之Promise async 和 await Event Loop 前提 js ...

  4. Redis学习笔记(转尚硅谷周阳)

    教学视频 Redis官网 Redis中文官网 一.NoSQL入门概述-上 1.互联网时代背景下大机遇,为什么用NoSQL 1.1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单 ...

  5. 尚学堂JAVA高级学习笔记_1/2

    尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...

  6. 数据可视化清新版【chart.js】学习笔记8.0—极地图(Polar Area)

    Polar Area--(极地图) 极地面积图类似于饼图,但每个线段具有相同的角度 - 线段的半径因值而异.当我们想要显示类似于饼图的比较数据,同时也要显示上下文的值的范围时通常使用这种类型的图表. ...

  7. JavaWeb学习笔记(5)-B站尚硅谷

    文章目录 十四.书城项目第三阶段--优化 (1)页面jsp动态化 (2)抽取页面中相同的内容 A.登录成功的菜单 B.base.css.jQuery标签 C.每个页面的页脚 D.manager模块的菜 ...

  8. JDBC学习笔记(1)---B站尚硅谷宋红康

    JDBC学习笔记(1)-B站尚硅谷宋红康 JDBC学习笔记(2)-B站尚硅谷宋红康 文章目录 软件架构方式介绍 JavaWeb技术概览 第1章:JDBC概述 1.1 数据的持久化 1.2 Java中的 ...

  9. b站尚硅谷springmvc学习视频:springmvc文档

    文章目录 一.SpringMVC简介 (b站尚硅谷springmvc学习视频:springmvc文档) 1.什么是MVC 2.什么是SpringMVC 3.SpringMVC的特点 二.HelloWo ...

  10. MySQL高级学习笔记(四)

    文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...

最新文章

  1. 子串字谜substring anagrams
  2. unity中如何解决镜头穿透模型?
  3. 【itext学习之路】--2.设置pdf的一些常用属性
  4. pe常用软件_装机不求人之打造自己的全功能PE系统维护优盘
  5. C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost
  6. HALCON 20.11:深度学习笔记(11)---目标检测
  7. Python数据结构与算法(1.4)——Python基础之控制结构
  8. L1-026 I Love GPLT (5 分)—团体程序设计天梯赛
  9. one_hot编码学习与实践
  10. day12 三大神器
  11. 高等数学(Calculus I)
  12. 图标及按钮在线搜索制作工具
  13. PS CS5学习(激活序列号后每次重启有要重新输入的问题
  14. 关系;关系模式;关系数据库
  15. nbuoj 1103 计算等式
  16. el-table 排序
  17. 2020.11.17【读书笔记】丨ONT 测序平台送样指导——DNA 取样要求
  18. 在Linux下安装Docker并搭建Eclipse che容器
  19. javascript的V8引擎的初步使用
  20. 分治算法,动态规划算法和贪心算法的区别和联系

热门文章

  1. 算法笔记-二分查找和二分答案
  2. 51.N皇后 (力扣leetcode) 博主可答疑该问题
  3. angular 注入器配置_Angular 的服务逻辑
  4. hbase 实战项目
  5. 关于fragment保存变量的问题
  6. Android中网络流量控制(防火墙)——Iptables
  7. 帮助你免于失业的十大软件技术
  8. MySQL索引入门 普通索引 唯一索引
  9. php mysql wordpresss_mysql+php+apache+wordpress环境搭建心得
  10. 帮助用户进行日常健康管理,常仁科技完成1亿元A轮融资