js高级学习笔记(b站尚硅谷)-13-作用域链
1. 分类
- 全局作用域
- 函数作用域
- 没有块作用域(ES6有了)
2. 作用
- 隔离变量,不同作用域下同名变量不会有冲突
3.作用域和执行上下文的区别
- 区别1
- 全局作用域之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了。而不是在函数调用时
- 全局执行上下文环境是在全局作用域确定之后, js代码马上执行之前创建
- 函数执行上下文是在调用函数时, 函数体代码执行之前创建
- 区别2
- 作用域是静态的, 只要函数定义好了就一直存在, 且不会再变化
- 执行上下文是动态的, 调用函数时创建, 函数调用结束时就会自动释放
- 联系
- 执行上下文(对象)是从属于所在的作用域
- 全局上下文环境==>全局作用域
- 函数上下文环境==>对应的函数使用域
四,作用域链
- 理解
- 多个上下级关系的作用域形成的链, 它的方向是从下向上的(从内到外)
- 查找变量时就是沿着作用域链来查找的
- 查找一个变量的查找规则
- 在当前作用域下的执行上下文中查找对应的属性, 如果有直接返回, 否则进入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-作用域链相关推荐
- 燕十八老师 JS高级学习笔记 之作用域链
作用域 在JS中,函数嵌套是非常普遍的,在函数嵌套中:对变量是如何寻找的? 答: 首先在函数内寻找,寻找不到,则在外层寻找 ...直到..全局(window)区域. // 例子1var c=5;fun ...
- [JS]JavaScript基础学习笔记(黑马pink+尚硅谷李立超)
文章目录
- JS高级学习笔记(6)- 事件循环
参考文章:深入理解JS引擎的执行机制 JavaScript 异步.栈.事件循环.任务队列 我的笔记:ES系列之Promise async 和 await Event Loop 前提 js ...
- Redis学习笔记(转尚硅谷周阳)
教学视频 Redis官网 Redis中文官网 一.NoSQL入门概述-上 1.互联网时代背景下大机遇,为什么用NoSQL 1.1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单 ...
- 尚学堂JAVA高级学习笔记_1/2
尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...
- 数据可视化清新版【chart.js】学习笔记8.0—极地图(Polar Area)
Polar Area--(极地图) 极地面积图类似于饼图,但每个线段具有相同的角度 - 线段的半径因值而异.当我们想要显示类似于饼图的比较数据,同时也要显示上下文的值的范围时通常使用这种类型的图表. ...
- JavaWeb学习笔记(5)-B站尚硅谷
文章目录 十四.书城项目第三阶段--优化 (1)页面jsp动态化 (2)抽取页面中相同的内容 A.登录成功的菜单 B.base.css.jQuery标签 C.每个页面的页脚 D.manager模块的菜 ...
- JDBC学习笔记(1)---B站尚硅谷宋红康
JDBC学习笔记(1)-B站尚硅谷宋红康 JDBC学习笔记(2)-B站尚硅谷宋红康 文章目录 软件架构方式介绍 JavaWeb技术概览 第1章:JDBC概述 1.1 数据的持久化 1.2 Java中的 ...
- b站尚硅谷springmvc学习视频:springmvc文档
文章目录 一.SpringMVC简介 (b站尚硅谷springmvc学习视频:springmvc文档) 1.什么是MVC 2.什么是SpringMVC 3.SpringMVC的特点 二.HelloWo ...
- MySQL高级学习笔记(四)
文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...
最新文章
- 子串字谜substring anagrams
- unity中如何解决镜头穿透模型?
- 【itext学习之路】--2.设置pdf的一些常用属性
- pe常用软件_装机不求人之打造自己的全功能PE系统维护优盘
- C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost
- HALCON 20.11:深度学习笔记(11)---目标检测
- Python数据结构与算法(1.4)——Python基础之控制结构
- L1-026 I Love GPLT (5 分)—团体程序设计天梯赛
- one_hot编码学习与实践
- day12 三大神器
- 高等数学(Calculus I)
- 图标及按钮在线搜索制作工具
- PS CS5学习(激活序列号后每次重启有要重新输入的问题
- 关系;关系模式;关系数据库
- nbuoj 1103 计算等式
- el-table 排序
- 2020.11.17【读书笔记】丨ONT 测序平台送样指导——DNA 取样要求
- 在Linux下安装Docker并搭建Eclipse che容器
- javascript的V8引擎的初步使用
- 分治算法,动态规划算法和贪心算法的区别和联系