Wpis z mikrobloga

@Senthill: Co do drugiego to nie miałeś przypadkiem na myśli function(){} ?

1. Przekazujesz systemowi timeoutowemu (nazwijmy go tak roboczo) nazwę funkcji która ma się uruchomić po sekundzie. Ta funkcja uruchomi się po sekundzie.
2. funkcja() wykona się od razu, a po sekundzie system timeoutowy spróbuje wywołać to, co funkcja() zwróciła. Jeśli zwróci funkcję lambda to się wykona, jeśli nie, to zapewne wywali błąd, ale mogę się mylić.
Dodanie nawiasów spowoduje wykonanie tej funkcji w miejscu podania. Opisowo mówiąc:

var funkcja = function() { console.log("asd"); return function() { console.log("lambda"); } };
setTimeout(funkcja, 1000); // pokaże console.log po sekundzie, potem zwrócona funkcja lambda nie wykona się
setTimeout(funkcja(), 1000); // pokaże console.log od razu a po sekundzie console.log wewnętrznej lambdy
@Senthill: setTimout w pierwszym parametrze musi dostać funkcję, którą wykona po określonym delayu

w pierwszy przypadku ją dostaje i funkcja ta zostaje odpalona zgodnei z założeniem
w drugim przypadku, ta funkcja zostaje wykonana od razu, a jej wynik zostanie przekazany do setTimout