Первый параметр у setTimeout и setInterval это функция или же строка, содержащая имя функции.
(function(){
var ret = 1;
setTimeout(function(){
alert(ret);
}, 1000);
ret = 2;
})()
А теперь, что бы было более понятнее, тут выводиться два alert теперь запусти и быстро закрой первый alert, потом посмотри значение второго, запусти второй раз и перед тем как закрыть первый, подожди две секунды и посмотри результат.
(function(){
var ret = 1;
setTimeout(function(){
alert("setTimeout: " + ret);
}, 2000);
alert("function: " + ret);
ret = 2;
})()