JavaScript基礎概念之----閉包

閉包 是由做用域鏈引發的。閉包

var parent = function(){
    var a = 'hello';
    return function(){
        console.log(a);
    }
}

var my = parent();
my();//輸出'hello',由於返回的函數能夠經過做用域鏈訪問a

如上代碼:函數

定義parent函數,返回一個匿名函數,並從全局做用域調用這個返回的匿名函數。spa

由於匿名函數被定義在parent函數內部,所以,它被調用後仍然可以訪問parent函數的做用域。這就是閉包。code

//另外一個例子
var myfunc = function(arg){
    return {
        myMethod:function(){
            return arg;
        }
    }
}

var my = myfunc('hello')
my.myMethod(); //返回 hello
相關文章
相關標籤/搜索