私はIIFE(即時呼び出し関数式)を研究しており、一般的なパターンとその仕組みを理解しています。
(function boo(y) {
alert(y);
})(2); // call, not a grouping operator, 2
この場合:
function body(y){
alert(y);
}(2);
(2)は単なるグループ化演算子であり、関数ステートメントの呼び出しとは関係ありません。これは次と同じです。
function body(y) {
alert(y);
}
(2);
これらの2つの関数が関数ステートメントの代わりに関数式を作成する方法がわかりません。
2, function () {
alert('anonymous function);
}();
// OR
!function () {
alert('Hello World');
}();
これらの2つの関数はどのように式として機能しますか?それらが無名関数であることがわかりますが、それらがどのように式であるかわかりませんか?何らかの構文エラーをスローする代わりに、なぜそれらが実行されるのですか?
まず、どの例も「関数ステートメント」とは呼ばれていません。これは、関数宣言のように見えますが、ステートメントブロックに表示される構文のMozillaのみの区別です。
この場合:
関数body(y){ alert(y); }(2);(2)は単なるグループ化演算子であり、関数ステートメントの呼び出しとは何の関係もありません。
はい、(2)
関数宣言が引き上げられているため、はグループ化演算子(2)
になります。したがって、は実際にはそれに続きません。
...それは次と同じです:
関数body(y){ alert(y); } (2);
はい、空白は無視されます。
これらの2つの関数が関数ステートメントの代わりに関数式を作成する方法がわかりません。
2、function(){ alert( 'anonymous function); }();//または
!function(){ alert( 'Hello World'); }();
オペランドに式を必要とする演算子が存在するため、これらは式です。このように、関数はオペランドになり、必要な式として評価されます。
したがって、プログラムが解析され、たとえばに遭遇すると、次に!
来るのは式でなければならないことがわかっているので、その後に続くものを評価するfunction () {...
と、それが有効な式であると見なされ、解釈されます。など。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加