1.变量作用域 : 变量 作用的范围
2.js中有三种作用域
(1)全局作用域(Script) : 页面任何地方使用
全局变量 : 大括号外面声明
(2)局部作用域(Local) : 只能在函数内部使用
局部变量: 函数内部声明的变量(形参也是局部变量)
(3)块级作用域(Block) : 在大括号(分支+循环)里面声明的变量
3.作用域链 :
* 默认情况下,js代码处在全局作用域(顶级作用域:0级),当我们声明一个函数的时候,就会开辟一个局部作用域(1级)。 如果在局部作用域中又声明函数,就会形成新的局部作用域(2级),以此类推,形成链式结构。称之为作用域链。
4.变量访问作用域链规则 : 就近原则
* 自己作用域有声明,就访问自己的。 自己没有就找上级作用域声明,如果有则访问,没有继续往上找。如果找到最顶级(0级),还是找不到。 就会报错 xxx is not defined
全局作用域 0级
let num = 10
function fn(){
//局部作用域 1级
// let num = 20
console.log(num)//20
function fn1(){
//2级
// let num = 30
console.log(num)//30
}
fn1()
}
console.log(num)//10
fn()