Możliwe duplikaty:
JavaScript: var functionName = function () {} vs function functionName () {}
Jaka jest różnica między wyrażeniem funkcji a deklaracją w JavaScript?
Dzisiaj natknąłem się na następujące zjawisko:
foo();
bar();
function foo()
{
console.log("inside foo");
}
var bar = function()
{
console.log("inside bar");
}
FireBug narzeka z następującym komunikatem o błędzie:
pasek nie jest funkcją
Kilka tutoriali to potwierdza function f()
i var f = function()
są w zasadzie to samo. Najwyraźniej tak nie jest, ale co dokładnie się tutaj dzieje?
Odpowiedzi:
1 dla odpowiedzi № 1Funkcjonować deklaracje są dostępne w dowolnym miejscu w zakresie, w którym zostały zdefiniowane, nawet przed ich fizycznymi definicjami.
var bar = function() { ... };
jest normalną zmienną, która zachowuje funkcję. Podobnie jak wszystkie inne zmienne, może być użyty tylko po przypisaniu go.
(Nie można zaobserwować przyszłej wartości zmiennej)