2015-12-08 3 views
-1

Ниже приведена анонимная функция, которая была помещена в круглые скобки, поэтому теперь функция может быть сохранена как переменная и вызывается в другом месте, как показано в номере 2. Однако как можно вызвать вызов сценария номер 1? Как его можно определить, если у него нет имени? И как изменить анонимную функцию на определенную функцию?Когда будет использоваться анонимная функция?

**Number 1** 
(function() { 
// Do something 
})(); 


**Number 2** 
(var funcName = function() { 
// Do something 
})(); 

funcName(); 
+0

Номер 2 недействителен Javascript. У вас не может быть оператора объявления переменной в контексте выражения. – Paulpro

+0

Анонимная функция может быть вызвана позже, не указывая имя с помощью Y-combinator – Paulpro

ответ

1

Да, это анонимные функции, но они также являются функции, которые в настоящее время называются/вызывается сразу, и, следовательно, не нужны имена, которые будут переданы позже.

Есть много применений для Немедленно вызываемой функции выражения (IIFE), но один должны использовать функции для создания пространства имен, которые не загрязняют глобальный

+0

. Да, это то, что я думал, но означает ли это, что они будут запускаться после загрузки страницы без ввода? –

+0

они будут работать, пока они читаются –

1

Первая функция вызываются сразу, потому что за ним следует (), который вызывает функция.

Затем, если вы должны были удалить () со всего var заявления (что ошибка):

Вторая функция также вызывается сразу, по той же причине.

Значение, сохраненное в funcName (который называется, как если бы это была функция, так что вызовет ошибку, если она не является функция) значение возвращения второй функции (и определяется кодом, который вы представленный как // Do something - «что-то» нужно включить «вернуть функцию»).

Как его определить, если у него нет имени?

Имена действительно полезно только для использования в отладчиков (где они очень полезны в трассировки стека и т.п.). Для идентификации функции для вызова вы обращаетесь к ним, как к любому другому объекту или примитиву (через переменную, свойство и т. Д.). Объявление функции просто создает переменную с соответствующим именем в текущей области.

Смежные вопросы