質問

この質問にはすでに答えがあります:

(function() {

  //do stuff

})();

編集:私はもともと、この構造は閉鎖と呼ばれると考えていました - 変数がキャプチャされた場合、閉鎖に(潜在的に)結果を引き起こした効果ではありません。

これは閉鎖自体の行動とは決して関係ありません - これは私が完全に理解しており、尋ねられているものではありませんでした。

役に立ちましたか?

解決

それは匿名の関数です(またはより正確には スコープ匿名関数)それはすぐに実行されます。

1つの使用は、その中で宣言されている変数と関数がその関数にスコープされ、したがってグローバルなコンテキストから隠されていることです(したがって、カプセル化と情報が隠されている)。

他のヒント

それは匿名の関数ですが、外側のスコープへの参照がないので閉鎖ではありません

http://www.jibbering.com/faq/notes/closures/

私は通常、「匿名関数の即時の呼び出し」のようなものと呼んでいます。

または、より単純に、「自己負担関数」。

すこし。しかし、それは実際には何も近づいておらず、すぐに呼ばれているので、実際には単なる匿名の関数です。

このコードを取ります:

function foo() {
    var a = 42;
    return function () {
        return a;
    }
}

var bar = foo();
var zab = bar();
alert(zab);

ここで、foo()によって返される関数は閉鎖です。変数の周りに閉じます。範囲外に途切れてしまったとしても、閉鎖を呼び出すことで閉鎖を呼び出すことは、まだ値を返します。

いいえ、閉鎖はこれらの線に沿ってむしろ何かです:

function outer()
{
    var variables_local_to_outer;

    function inner()
    {
        // do stuff using variables_local_to_outer
    }

    return inner;
}

var closure = outer();

閉鎖は、それを返した関数に局所的な変数への参照を保持します。

編集: :もちろん、匿名関数を使用して閉鎖を作成できます。

var closure = (function(){

    var data_private_to_the_closure;

    return function() {
        // do stuff with data_private_to_the_closure
    }

})();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top