To pytanie dotyczy o tej samej nazwie funkcji i zmiennej. Proszę mi powiedzieć - dlaczego tego kodu nie ma błędów:Nazwa zmiennej jest jak nazwa funkcji - kiedy powoduje błąd/kiedy nie jest
var Task = new Task();
function Task() {
console.log('work!');
}
ale ten nie będzie działać:
start();
function start() {
var Task = new Task();
};
function Task() {
console.log('work!');
}
Dlaczego to jest tak?
Myślę, że spadki są tu trochę niższe - nie jest od razu oczywiste, dlaczego zmieniona przez rekrutację zmienna 'Task' działa poza funkcją, ale nie w środku. –
Zadanie nie znajduje się w środowisku wykonawczym po wywołaniu polecenia start. Więc nie zostało jeszcze zdefiniowane. W pierwszym przykładzie zadanie jest podnoszone. W drugim przykładzie start jest nazywany pierwszym, więc Zadanie nie istnieje jeszcze –
@SterlingArcher Pewne, że tak. Kwestią jest zakres i podnoszenie. Nie mam teraz czasu, aby przejść do pełnej odpowiedzi teraz ... –