--- title: 05-作用域和闭包 publish: true --- ## 前言 面试问题: - 说一下对变量提升的理解 - 说明this的几种不同的使用场景 - 创建10个``标签,点击的时候弹出来对应的序号 - 如何理解作用域 - 实际开发中闭包的应用 涉及到的知识点: - 执行上下文 - this - 作用域 - 作用域链 - 闭包 ## 执行上下文 执行上下文主要有两种情况: - 全局代码: 一段` ``` 理解: - 多个上下级关系的作用域形成的链, 它的方向是从下向上的(从内到外) - 查找变量时就是沿着作用域链来查找的 查找一个变量的查找规则: ```javascript var a = 1 function fn1() { var b = 2 function fn2() { var c = 3 console.log(c) console.log(b) console.log(a) console.log(d) } fn2() } fn1() ``` - 在当前作用域下的执行上下文中查找对应的属性, 如果有直接返回, 否则进入2 - 在上一级作用域的执行上下文中查找对应的属性, 如果有直接返回, 否则进入3 - 再次执行2的相同操作, 直到全局作用域, 如果还找不到就抛出找不到的异常