Есть несколько способов вызвать функцию JS:
(1) напрямую вызовать именованную функцию
Кода -копия выглядит следующим образом:
Функция foo ()
{
}
foo ();
(2) Анонимные функции вызываются ссылкой
Кода -копия выглядит следующим образом:
FOOREF = function ()
{
}
FOOREF ();
(3) Вызов анонимной функции без ссылки 1
Кода -копия выглядит следующим образом:
(function ()
{
} ());
(4) Вызов анонимной функции без ссылок 2
Кода -копия выглядит следующим образом:
(function ()
{
}) ();
(5) Вызов анонимной функции без ссылок 3
Кода -копия выглядит следующим образом:
void function ()
{
} ();
Рисунок 1.1 и рисунок 1.2 показывают, что процесс работы этих двух выражений отличается. На рисунке 1.1 принудительный оператор используется для выполнения операции вызова функции. На рисунке 1.2 принудительный оператор используется для управления выражением «Объявление прямого количества» выражения »и возвращает ссылку на саму функцию, а затем ссылка функции выполняется через операцию вызова функции» () ». Последняя анонимная функция выше вызывает void function () {} (); используется для вызова функции и игнорировать возвратное значение. Оператор void используется для того, чтобы сделать экспрессию функции, которые следуют за операциями. Если мы не используем «void» и принудительной операции »()», можно ли выполнить код:
(1) function () {} () // Использование '' () "
(2) function () {} (); //Использовать ";" Чтобы выполнить оператор
Двигатель скрипта будет думать, что function () {} является объявлением функции, так что он не может передавать синтаксис -обнаружение, а код анализируется так:
function () {}; ();
function () {} интерпретируется как объявление, а "();" интерпретируется независимо как строка, поэтому будет сообщена синтаксическая ошибка. Почему вы знаете, что это ошибка, вызванная "();"? Мы меняем его на следующий код:
function () {} (1);
Это будет объяснено двигателем как:
fucntion () {};
(1); // однозначное выражение
Следовательно, обнаружение синтаксиса прошло ...