オリジナルリンク:https://www.cnblogs.com/ming-os9/p/8891300.html
JS(関数(){...})()内の機能がすぐに実行されます
1(関数(){...})() 3(関数(){...}())
これらはすぐに機能の2つの一般的な言葉遣いのjs実行されています。
基本的な概念:
関数宣言:関数FNAME(){...};ファンクションキーを使用して関数を宣言し、その関数名を指定します。
関数式:VARのFNAME =機能(){...};関数を宣言するために関数キーワードを使用してではなく、関数名に、そして最終的に変数に無名関数を与えられました。
匿名関数:関数(){};なく、関数名に、関数を宣言する機能キーワードを使用します。(匿名関数も関数式に属します。)
(多くの無名関数の役割..変数関数が作成され、イベントが与えられたイベントハンドラなどとなっていいます)
関数宣言との差異の関数式について:
1:関数宣言巻き上げ関数宣言(単語を置き換え関数宣言を強化することである)、関数式がこれを持っていない現在のjsのコードは、この行を呼び出すことができたときに、それが解決される必要があります。
2:プラスの背後にある関数式()はすぐにできない、それしかできfnameは()の呼び出し関数宣言、関数を呼び出します。
例:
ます。FName 1(); 正しい2 fNameを関数(){...} //、関数宣言を向上させるので、fnameが()関数宣言の前に書き込むことができます。 3 。4 fNameを(); 5 fNameをするvar =関数(){...} //エラー関数宣言は、発現を増強する機能を有していません。 6 。7 fNameをするvar =関数(){...}(); //プラスの後ろに正しい関数式()関数は直ちに呼び出されます。 8 。9 fNameを関数(){...}(); //エラー関数宣言はfNameをによって呼び出されなければなりません()。
関数宣言関数fNameを(){...} //この行は、2つの部分に分解された 2 括弧の中には発現がないため、式()、式エラーをグループ化
機能は、(){.. }(); //匿名関数を呼び出すようにすることができない、機能ので(){...}文として扱われ、ステートメントを直接することができない()コール。
ちなみに、直ちに生命維持(すぐに呼び出される関数式)を呼び出します。
(関数(){...})()と(機能(){...}())には違いありません!
機能の伝統的な定義は次のとおりです。
1つの関数foo(){...} // これが定義され、宣言だけ実行されません、その存在のインタプリタを知らせ 2 3 FOOを();この文で、//、インタプリタは、ステートメントがそれを実行します遭遇
なぜ、それが生命維持しますか?1:ロングったらしいの伝統的な方法。2:伝統的な方法は、グローバルな名前空間を汚染します
だから我々は、このような書き込み 関数foo(){...}( ;) 大丈夫書かれています。。いいえ、なぜ、関数fooので、(){...}この文は、文字列string「関数foo(){...}書いたように、インタプリタの一部でしかありません 」と、 それはする必要があります分析機能は、それができ、実行するためにeval()などを使用することができます。だから、文の後ろに直接配置される()入れ十分でない、間違っている文法!
しかし、私たちは関数がその上に関数式になっ宣言する必要があり、非常に近い距離の成功です。この方法は、最も一般的な方法は、包ま1ペア()を使用することで、非常に大きいです。 (関数foo(){...} )();
これは同等です
1つのVARのFOO =関数(){...}。 2のfoo();
もちろん、式文になるため、他の多くの方法があります。
!1関数foo(){...}(); 2 +関数foo(){...}(); 3ボイド関数(){...}();
必要に応じてグローバルオブジェクトなので、例えば、渡すこと:
ボイド関数1(グローバル){ 2はconsole.log( "APOS値である:" + global.aa); //グローバルオブジェクトAAの値を取得することができ 3}(この)
1つのVARのAA = 10。 2(関数(A){ 3はconsole.log( "Hello World"の+ A); 4})(AA)。
1(関数(){...})() 3(関数(){...}())
これらはすぐに機能の2つの一般的な言葉遣いのjs実行されています。
基本的な概念:
関数宣言:関数FNAME(){...};ファンクションキーを使用して関数を宣言し、その関数名を指定します。
関数式:VARのFNAME =機能(){...};関数を宣言するために関数キーワードを使用してではなく、関数名に、そして最終的に変数に無名関数を与えられました。
匿名関数:関数(){};なく、関数名に、関数を宣言する機能キーワードを使用します。(匿名関数も関数式に属します。)
(多くの無名関数の役割..変数関数が作成され、イベントが与えられたイベントハンドラなどとなっていいます)
関数宣言との差異の関数式について:
1:関数宣言巻き上げ関数宣言(単語を置き換え関数宣言を強化することである)、関数式がこれを持っていない現在のjsのコードは、この行を呼び出すことができたときに、それが解決される必要があります。
2:プラスの背後にある関数式()はすぐにできない、それしかできfnameは()の呼び出し関数宣言、関数を呼び出します。
例:
ます。FName 1(); 正しい2 fNameを関数(){...} //、関数宣言を向上させるので、fnameが()関数宣言の前に書き込むことができます。 3 。4 fNameを(); 5 fNameをするvar =関数(){...} //エラー関数宣言は、発現を増強する機能を有していません。 6 。7 fNameをするvar =関数(){...}(); //プラスの後ろに正しい関数式()関数は直ちに呼び出されます。 8 。9 fNameを関数(){...}(); //エラー関数宣言はfNameをによって呼び出されなければなりません()。
関数宣言関数fNameを(){...} //この行は、2つの部分に分解された 2 括弧の中には発現がないため、式()、式エラーをグループ化
機能は、(){.. }(); //匿名関数を呼び出すようにすることができない、機能ので(){...}文として扱われ、ステートメントを直接することができない()コール。
ちなみに、直ちに生命維持(すぐに呼び出される関数式)を呼び出します。
(関数(){...})()と(機能(){...}())には違いありません!
機能の伝統的な定義は次のとおりです。
1つの関数foo(){...} // これが定義され、宣言だけ実行されません、その存在のインタプリタを知らせ 2 3 FOOを();この文で、//、インタプリタは、ステートメントがそれを実行します遭遇
なぜ、それが生命維持しますか?1:ロングったらしいの伝統的な方法。2:伝統的な方法は、グローバルな名前空間を汚染します
だから我々は、このような書き込み 関数foo(){...}( ;) 大丈夫書かれています。。いいえ、なぜ、関数fooので、(){...}この文は、文字列string「関数foo(){...}書いたように、インタプリタの一部でしかありません 」と、 それはする必要があります分析機能は、それができ、実行するためにeval()などを使用することができます。だから、文の後ろに直接配置される()入れ十分でない、間違っている文法!
しかし、私たちは関数がその上に関数式になっ宣言する必要があり、非常に近い距離の成功です。この方法は、最も一般的な方法は、包ま1ペア()を使用することで、非常に大きいです。 (関数foo(){...} )();
これは同等です
1つのVARのFOO =関数(){...}。 2のfoo();
もちろん、式文になるため、他の多くの方法があります。
!1関数foo(){...}(); 2 +関数foo(){...}(); 3ボイド関数(){...}();
必要に応じてグローバルオブジェクトなので、例えば、渡すこと:
ボイド関数1(グローバル){ 2はconsole.log( "APOS値である:" + global.aa); //グローバルオブジェクトAAの値を取得することができ 3}(この)
1つのVARのAA = 10。 2(関数(A){ 3はconsole.log( "Hello World"の+ A); 4})(AA)。