Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Использование settimout (https://javascript.ru/forum/misc/68935-ispolzovanie-settimout.html)

Duda.Ml1986@gmail.com 18.05.2017 12:01

Использование settimout
 
Сегодня нужно было отложить выполнение функции на 3 сек. Естественно обратился к setTimeout().

Но меня удивило то что код:
//showWhatsappViberPopup() сработает через 60000 мс

setTimeout(
function(){ 
showWhatsappViberPopup() 
}, 
60000);

//showWhatsappViberPopup() сработает сразу

setTimeout(
showWhatsappViberPopup(), 
60000);


Почему так? Спасибо.

Nexus 18.05.2017 12:11

Цитата:

Сообщение от Duda.Ml1986@gmail.com
setTimeout(
showWhatsappViberPopup(),
60000);

Скобочки после названия пользовательской функции всему виной, т.е. ты передаешь функции «setTimeout» не код функции «showWhatsappViberPopup», а результат её выполнения.

function foo(){return 'bar';}
console.log(foo);//В консоль будет помещен код функции «foo»
console.log(foo());//В консоль будет помещен результат работы функции «foo»


Одинаковый результат будет получен так:
setTimeout(function(){
	showWhatsappViberPopup()
},60000);

setTimeout(showWhatsappViberPopup,60000);

Duda.Ml1986@gmail.com 18.05.2017 12:22

Спасибо. Понял.


Часовой пояс GMT +3, время: 01:53.