JS関数を呼び出す方法はいくつかあります。
(1)名前付き関数を直接呼び出します
コードコピーは次のとおりです。
functionfoo()
{
}
foo();
(2)匿名関数は参照によって呼び出されます
コードコピーは次のとおりです。
fooref = function()
{
}
fooref();
(3)参照なしの匿名関数呼び出し1
コードコピーは次のとおりです。
(関数()
{
}());
(4)参照なしの匿名関数呼び出し2
コードコピーは次のとおりです。
(関数()
{
})();
(5)参照なしの匿名関数呼び出し3
コードコピーは次のとおりです。
void function()
{
}();
図1.1および図1.2は、これら2つの式の動作プロセスが異なることを示しています。図1.1では、強制演算子を使用して、関数呼び出し操作を実行できるようにします。図1.2では、強制演算子を使用して式「関数直接数量宣言」を操作し、関数自体への参照を返し、関数参照は関数呼び出し操作「()」を介して動作します。上記の最後の匿名関数は、void function(){}()を呼び出します。関数を呼び出し、返品値を無視するために使用されます。オペレーターvoidは、操作を実行する機能式を作成するために使用されます。 「void」と強制操作「()」を使用しない場合、コードを実行できます。
(1)function(){}()// ''() "を使用してコールを強制します
(2)function(){}(); //使用 ";"ステートメントを実行します
スクリプトエンジンは、function(){}はfunction宣言であるため、構文の検出に合格できず、コードは次のように解析されます。
関数(){};();
function(){}は宣言として解釈され、while "();"線として独立して解釈されるため、構文エラーが報告されます。なぜ「();」によって引き起こされるエラーであることを知っているのですか?次のコードに変更します。
function(){}(1);
これは、エンジンによって次のように説明されます。
fucntion(){};
(1); //単一値式
したがって、構文検出が合格しました...