作用域
- 概念
- 一个代码段所在的区域,静态的,在编写代码时就确定了
- 分类
- 全局作用域
- 函数作用域
- 块作用域(ES6)
- 作用
- 隔离变量,不同作用域下同名变量不会冲突
作用域链
- 理解
- 多个上下级关系的作用域形成的链,它的方向是从下向上的(从内到外)
- 查找变量时就是沿着作用域链来查找的
- 查找一个变量的查找规则
- 在当前作用域下的执行上下文中查找对应的属性,如果有直接返回,否则进入上一级
- 在上一级作用域下的执行上下文中查找对应的属性,如果有直接返回,否则进入上一级
- 再依次执行相同操作,直至查找到全局作用域,如果有直接返回,否则就抛出找不到的异常
var a = 10
function fn1() {
var b = 20
function fn2() {
var c = 30
console.log('a:' + a) // a:10
console.log('b:' + b) // b:20
console.log('c:' + c) // c:30
}
fn2()
}
fn1()