1

次のコードは何をしますか?

私は何年も JS を使用してきましたが、この構造がどのように機能するのかわかりませんか?

(function() { /* No implementation yet */ })();

実装がないことを知っている場合、実装がある場合、どうすればそれを呼び出すことができますか? 以下は匿名オブジェクトを作成しますか?

var temp = (function() {  })();

私は次のように使用できます:

temp.doWhateverDefined();
4

6 に答える 6

2
(function() { /* No implementation yet */ })();

これは、即時呼び出し関数式または略して IIFE と呼ばれます。宣言され、評価され、すぐに呼び出されます。

基本的な考え方は次のとおりです。

var x = (function() { return 5;})();
alert(x); //5
于 2013-05-10T17:23:11.717 に答える
1

すぐに実行されます。まるであなたが言ったかのようです:

var f = function() { /* No implementation yet */ }
(f)();

これはと同じです

var f = function() { /* No implementation yet */ }
f();

そのポイントは、コードのブロック (ページの初期化など) が、同じ名前を使用する可能性のある他の Javascript コードと競合することなく、好きな変数/関数名を使用できるようにすることです。すべての機能/etc. そのブロックで宣言されたものはローカルであり、外の世界に害を与えません。

于 2013-05-10T17:23:01.107 に答える
0

あなたが持っているのは、すでに呼び出されている自己呼び出し関数です。

var temp = (function() {  })();

したがって、関数は temp() または temp.somethin(); となるように関数を返す必要があります。引き起こされる可能性があります。詳細については、以下の例を参照してください。

var temp = (function() { return {
    doWhateverDefined: function () {
        return 'invoked';}
      };  
    }
)();

alert(temp.doWhateverDefined()); //should alert invoked

デモ: http://jsfiddle.net/5ch8F/1/

于 2013-05-10T17:26:02.800 に答える