/ / Dlaczego funkcje anonimowe traktowane są tutaj inaczej niż funkcje nazwane? [duplicate] - javascript, function, anonymous-function

Dlaczego funkcje anonimowe traktowane są tutaj inaczej niż funkcje nazwane? [duplicate] - javascript, function, anonymous-function

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 № 1

Funkcjonować 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)