Existem várias maneiras de chamar a função JS:
(1) Chame a função nomeada diretamente
A cópia do código é a seguinte:
função foo ()
{
}
foo ();
(2) As funções anônimas são chamadas por referência
A cópia do código é a seguinte:
fooref = function ()
{
}
fooref ();
(3) Chamada de função anônima sem referência 1
A cópia do código é a seguinte:
(função()
{
} ());
(4) Chamada de função anônima sem referências 2
A cópia do código é a seguinte:
(função()
{
}) ();
(5) Chamada de função anônima sem referências 3
A cópia do código é a seguinte:
função void ()
{
} ();
A Figura 1.1 e a Figura 1.2 mostram que o processo de operação dessas duas expressões é diferente. Na Figura 1.1, o operador forçado é usado para permitir que a operação de chamada de função seja executada. Na Figura 1.2, o operador forçado é usado para operar a expressão "Declaração de quantidade direta da função" e retorna uma referência à própria função e, em seguida, a referência da função é operada através da operação de chamada de função "()". A última função anônima acima chama void function () {} (); é usado para chamar a função e ignorar o valor de retorno. O vazio do operador é usado para fazer as expressões de função que se seguem a executar operações. Se não usarmos a operação "Void" e forçada "()", o código pode ser executado:
(1) function () {} () // use '' () "para forçar a chamada
(2) function () {} (); //Usar ";" Para executar a declaração
O mecanismo de script pensará que a função () {} é uma declaração de função, para que não possa passar a detecção de sintaxe, e o código é analisado assim:
função(){};();
function () {} é interpretado como uma declaração, enquanto "();" é interpretado independentemente como uma linha, portanto, será relatado um erro de sintaxe. Por que você sabe que é um erro causado por "();"? Nós alteramos para o seguinte código:
function () {} (1);
Isso será explicado pelo motor como:
fucntion () {};
(1); // Expressão de valor único
Portanto, a detecção de sintaxe passou ...