Лучшее форматирование кода должно помочь вам понять, что происходит.
var a = function () {
console.log('print 3');
return 5000;
};
setTimeout( function (){
console.log('print 2'); # Executed after 5000 ms.
},
a()); # Executed first and returns 5000
console.log('print 1'); #Executed second
Следующий фрагмент не работает, так как вы никогда не выполняете 2-ю часть функции.
setTimeout( function (){
console.log('print 2');
}, (function () { # Never executed.
console.log('print 3');
return 5000;
} )
);
console.log('print 1');
Будет работать следующее:
setTimeout( function (){
console.log('print 2');
}, (function () {
console.log('print 3');
return 5000;
} )(); #The brackets () will execute the function.
);
console.log('print 1');
В качестве отступления
Пример не имеет ничего общего с node.js и будет давать точно такие же результаты в любом браузере, которыйотвечает на консоль.