2016-01-22 2 views
0

я работал на функции в JavaScript, и я подумал, что я мог бы вызвать анонимную функцию позже:Могу ли я назвать анонимную функцию позже

code 
more code 

(function() { 
alert('Hello World!'); 
})(); 
more code 
(function() { 
alert('Goodbye World!'); 
})(); 

//call to the first anonymous function 
//call to the first anonymous function 

Можно ли назвать анонимные функции? Я предполагаю, что может быть массив, содержащий все функции?

+1

Можете ли вы уточнить __later__? – Rayon

+0

Я останусь онлайн, пока не получу ответ, поэтому, если у вас есть вопрос или предложение относительно моего вопроса, спросите, пожалуйста, пожалуйста, объясните, почему я могу учиться у него! –

+0

Несомненно, позже в скрипте, когда код прошел анонимной функцией –

ответ

1

Поскольку функции являются «гражданами первого сорта», вы можете назначить их переменным или поместить их в массивы/объекты, как и любые другие var, независимо от того, являются ли они анонимными или нет.

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

Кроме того, вы не выполняете его немедленно, скорее, вы выполните его позже.

var anon1 = (function(){ 
    alert("anon1"); 
}); // <-- no() so it doesn't execute now. 

// code code 

anon1(); // <-- execute now 

// ----- or ------- 
var myFuncs = []; 

myFuncs.push((function(){ 
    alert("in myFuncs"); 
})); // <-- not executing it here. 

// code code 

myFuncs[0](); // <-- execute now 
+0

Вам не нужно обертывать свои функции в круглых скобках. – Stevo

+0

Просто старайтесь поддерживать согласованность с оригинальным вопросом для вопроса. – bob

+0

Извините за педантичность, но скобки нужны только для IIFE, поэтому оставить их, когда вы не делаете IIFE, не так. Если бы мне пришлось поддерживать кодовую базу, в которой разработчик завернул все свои функциональные выражения в круглые скобки, первое, что я хотел бы сделать, это реорганизовать ее, чтобы удалить их. – Stevo