function - JavaScript 型一覧 - JavaScriptのクロージャはどのように動作しますか?

javascript 型指定 / javascript / variables / scope / closures

クロージャが構成する概念(例えば、関数や変数など)を知っていても、クロージャそのものを理解していない人に、JavaScriptのクロージャをどのように説明しますか?

28 revs, 21 users 17%



Answer #1

クロージャは、秘密のデータが隠された関数を作るときによく使われます(ただし、必ずしもそうではありません)。

var db = (function() {
    //データを保持する非表示のオブジェクトを作成します
    //外部からはアクセスできません。
    var data = {};

    //データへのアクセスを提供する関数を作成します。
    return function(key, val) {
        if (val === undefined) { return data[key] } // 取得する
        else { return data[key] = val } // セットする
    }
    //匿名の周囲関数を呼び出しています。
    //クロージャである上記の内部関数を返します。
})();

db('x')    //->未定義
db('x', 1) // xを1に設定します
db('x')    // -> 1
//データオブジェクト自体にアクセスすることはできません。
//個別に取得または設定できます。