var f=function foo()
{
console.log("hello");
};
f();
foo();
To daje błąd jako: "Wyjątek: ReferenceError: foo nie jest zdefiniowana"Dlaczego nie jest możliwe uzyskanie dostępu do funkcji javascript przez jej oryginalną nazwę po przypisaniu jej do innego var?
Ale "foo" jest zdefiniowany. Dlaczego tak się dzieje? Wiem, że jest to wyrażenie funkcji i "f()" jest używane, aby uzyskać dostęp do tej funkcji. Ale to nie jest anonimowa funkcja, mam nazwę dla tej funkcji. Dlaczego nie mogę uzyskać dostępu do funkcji, używając jej nazwy?
Patrz [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/function#Named_function_expression) W przypadku wyrażenia funkcji, jeśli nazwiesz funkcję, wtedy nazwa jest dostępna tylko w treści funkcji, a nie na zewnątrz. – abhishekkannojia
W js wszystkie funkcje są zmiennymi. Ale w twoim przypadku foo() jest przypisane do f. foo() otrzyma błąd odniesienia, ponieważ nie jest zdefiniowany. –
foo nie jest zdefiniowane. f jest zdefiniowane. –