0

私はIIFEをいつも見ています。

一連のステートメントが開いたままになっています。つまり、括弧で囲まれていません。

関数の後にその呼び出しが表示されないのはなぜですか

    // lib code...we are inside an IIFE 

    function fooName () {
    }
    fooName();

    // lib code...

クロージャーが必要ないとき、つまり、永続的または静的なローカル変数が必要ないときに、一連のステートメントをすぐに呼び出すにはどうすればよいですか?

このイディオム/パターンに何か問題がありますか? 名前はありますか?使用されていますか?

非「小さい」コード

function manageGlobal() {
    if (win.$A && win.$A.cg) {
        $A.extend($A, window.$A);
    } else if (window.$A) {
        $A_previous = window.$A;
    } else {
        $A = window.$A = {};
    }
}
manageGlobal();
4

1 に答える 1

2

これは、関数宣言とそれに続く呼び出しです。

具体性がないため、名前はありません。言語の基本的な明白な使用法です。

ちなみに、 IIFE よりも利点はありません。

  • もっと冗長です
  • グローバル (またはローカル) ネームスペースに名前を追加します。

クロージャーが必要なく、小さな IIFE にいるときに名前空間の汚染を避ける必要がない場合は、関数を宣言する代わりに、関数にコードを直接含めることができます。

于 2013-02-25T19:51:08.643 に答える