Dlaczego zmienne podnoszące JavaScript?
Jaki był powód, dla którego projektanci zdecydowali się wdrożyć podnoszenie? Czy są jakieś inne popularne języki, które to robią?
Proszę podać odpowiednie linki do dokumentacji i / lub zapisów.
javascript
hoisting
Xlaudius
źródło
źródło
div
w jQueryOdpowiedzi:
Jak wyjaśnia Stoyan Stefanov w książce „JavaScript Patterns”, podnoszenie jest wynikiem implementacji interpretera JavaScript.
Interpretacja kodu JS wykonana w dwóch przebiegach. Podczas pierwszego przebiegu interpreter przetwarza deklaracje zmiennych i funkcji.
Drugi przebieg to rzeczywisty krok wykonania kodu. Interpreter przetwarza wyrażenia funkcyjne i niezadeklarowane zmienne.
Zatem do opisania takiego zachowania możemy użyć pojęcia „podnoszenia”.
źródło
Twórca JS Brendan Eich powiedział kiedyś (na Twitterze) :
Wyjaśnił również, że…
Czy są jakieś inne popularne języki, które to robią?
Nie znam żadnych innych popularnych języków, które w ten sam sposób podnoszą zmienne. Myślę, że nawet ActionScript - kolejna implementacja ECMAScript używana w programowaniu Flash - nie zaimplementowała podnoszenia. Było to źródłem nieporozumień i frustracji dla programistów znających inne języki, którzy uczą się JavaScript.
źródło
Dzieje się tak, ponieważ interpreter JavaScript interpretuje kod w dwóch cyklach.
W 1 cyklu wszystkie deklaracje zmiennych i funkcji są brane do górnej części zakresu funkcji jest nakaz. To pomaga w tworzeniu
variableObjects
dlaexecution context
funkcji nawet zanim będzie za realizację.W drugiej fazie przypisania wartości, instrukcje kodu i wywołania funkcji są wykonywane wiersz po wierszu w oczekiwany sposób.
Tutaj masz trochę bardziej szczegółowe informacje .
To daje lepszy obraz wokół zachowań wokół
let
,const
iclass
deklaracji, również pierwszeństwa wynika między zmiennych i funkcji.źródło