function cos() { var a = "wartosc"; setTimeout(function(){ alert(a); }, 1000); }
Przykład wygląda jakby nie było w nim żadnego błędu, a jednak alert wyświetli nam, że zmienna nie istnieje.
Dzieje się tak gdyż zmienna a "ginie" zanim wykona się funkcja setTimeout bo jest zmienną lokalną. Zastanawia mnie czy jest jakiś sposób przekazania zmiennej lokalnej do funkcji zawartej w setTimeout?
Użycie zmiennej a jako globalnej nie wchodzi w grę gdyż mogła by ona już dawno zmienić swoją wartość. A mi chodzi o wartość jaką zmienna a miała w momencie użycia funkcji setTimeout.