作用域
作用域
全局作用域:可以全局使用的变量、类似windows、不被函数包裹的变量
函数作用域:只能在函数内部使用的变量
块级作用域(ES6新增):只能在{}花括号中访问的变量
自由变量:
一个变量当前作用域没有定义、但是被使用了、他会向上级作用域一层一层以此寻找、直到找到为止;(如果到全局作用域都没找到、则报错 xxx is not defined)
<script>
let a = 0;
function fn1(){
let a1 = 100;
function fn2(){
let a2 = 200;
function fn3(){
let a3 = 300;
return a + a1 + a2 + a3
// a 属于全局作用域
// a\a1\a2 属于自由变量
// a3 属于块级作用域
}
fn3()
}
fn2()
}
fn1()
</script>