Jeśli funkcje w JS są pierwszej klasy, co pozwala na ich wywołanie przed ich zdefiniowaniem?
Czy funkcje pierwszej klasy nie oznaczają, że zachowują się jak zmienne? Oczywiście nie zachowują się dokładnie tak, jak zmienne, ponieważ:
console.log(foo);
var foo = 'bar';
... nie działa, podczas gdy to:
console.log(foo());
function foo() {
return('bar');
}
...robi.
To powiedziawszy:
console.log(foo());
var foo = function() { return 'bar'; };
nie działa, co jest bardziej spójne.
Co daje?