読者です 読者をやめる 読者になる 読者になる

Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

Closure

クロージャーについてよくわかってなかったのでメモ。

//closure
var test1 = function() {
    var m = 0;
    return function() {
        var s = 0;
        console.log("s="+s+" "+"m="+m);
        s++;
        m++;
    }
};

var func = test1();
func();//s=0 m=0
func();//s=0 m=1
func();//s=0 m=2

無名関数生成時に変数がラップされて、以後状態がそのまま関数内で参照される、ということか。関数の内容は同じだけどパラメータが違うような無名関数を沢山作るのに便利そう。

実行例
http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0005?page=2

メモリの兼ね合いもあるので、多用はNG。

広告を非表示にする