1. 程式人生 > >ES3之closure ( 閉包 )

ES3之closure ( 閉包 )

console java script src urn sum bat sof var

閉包是函數和聲明該函數的詞法環境的組合。

JavaScript中的函數會形成閉包。 閉包是由函數以及創建該函數的詞法環境組合而成。這個環境包含了這個閉包創建時所能訪問的所有局部變量。

function playGame(){
    var name = ‘Ace Combat‘;
    function playGame_(){
        console.log(‘[play game]‘,name);
    }
    return playGame_;
}
var play = playGame();
play();

技術分享圖片

創建多個閉包

playAplayB 都是閉包。它們共享相同的函數定義,但是保存了不同的詞法環境。在 playA的環境中,game 為 Ace Combat。而在 playB

中,game 則為 Neo Contra。

function playGame(game) {
    function playGame_() {
        console.log(‘[play game]‘, game);
    }
    return playGame_;
}
var playA = playGame(‘Ace Combat‘);
var playB = playGame(‘Neo Contra‘);
playA();
playB();

技術分享圖片

ES3之closure ( 閉包 )