闭包作用域链定义

1、自执行函数
(function(){

})()
自执行函数可以模仿块级作用域
js中没有块级作用域
if(true){
    var a = 3
}
console.log(a);

2、闭包
函数里面套函数
缺点:容易内存泄漏

3、作用域链
window.alert(2233);
var a1 = 3;
var a = 4;
window.a

function fn(){
    var a = 1
    console.log(a)
       function fn1(){
           var b =2
           function fn3(){
               var c =3
           }
       }
       function fn2(){
           var d =4
       }
}

对于fn fn自己的执行环境》window
fn1的作用域链 fn1>fn>window
fn3 fn3>fn1>fn>window
fn2 fn2>fn>window

作用域链是在函数定义的时候决定的,不是调用的时候

你可能感兴趣的:(闭包作用域链定义)