Podnoszenie JavaScript: Dziękuję za nic

Jan 14 2023
Jestem pewien, że jako programista JavaScript doskonale zdajesz sobie sprawę z „radości”, która jest narastająca. Ale jeśli potrzebujesz odświeżenia, hoisting to zachowanie w JavaScript, w którym zmienne i funkcje są automatycznie przenoszone na początek ich zakresu przed wykonaniem kodu.
Zdjęcie Blake'a Connally'ego na Unsplash

Jestem pewien, że jako programista JavaScript doskonale zdajesz sobie sprawę z „radości”, która jest narastająca. Ale jeśli potrzebujesz odświeżenia, hoisting to zachowanie w JavaScript, w którym zmienne i funkcje są automatycznie przenoszone na początek ich zakresu przed wykonaniem kodu.

Niektórzy mogą twierdzić, że podnoszenie jest użyteczną funkcją, pozwalającą nam odwoływać się do zmiennych i funkcji, zanim zostaną one faktycznie zadeklarowane w naszym kodzie. Ale bądźmy szczerzy: wady znacznie przewyższają zalety, jeśli chodzi o tę „funkcję”.

Jednym z głównych problemów z podnoszeniem jest to, że może być bardzo mylące dla nowych programistów. Kiedy uczysz się kodować, ważne jest, aby dobrze rozumieć koncepcje i zasady, z którymi pracujesz. Podnoszenie jest sprzeczne z niektórymi podstawowymi zasadami programowania, takimi jak idea, że ​​deklaracje powinny pojawiać się przed użyciem, a zmienne powinny być inicjowane przed ich użyciem. Może to prowadzić do zamieszania i utrudnić nowym programistom zrozumienie, co dzieje się w ich kodzie.

Ale nawet dla doświadczonych programistów podnoszenie może być uciążliwe. Wystarczająco trudno jest śledzić wszystkie zmienne i funkcje w kodzie, nie mówiąc już o martwieniu się o ich rozmieszczenie w stosunku do podnoszenia. Może to prowadzić do straty czasu i frustracji podczas próby debugowania kodu i ustalenia, dlaczego nie działa zgodnie z oczekiwaniami.

Oprócz tego, że jest mylący i frustrujący, podnoszenie jest również niespójne. Jak wspomniano wcześniej, zachowuje się inaczej w zależności od tego, czy używasz trybu ścisłego, czy nie. Oznacza to, że musisz bardzo uważać na to, jak używasz podnoszenia, i być może będziesz musiał zmienić swój kod w zależności od tego, czy używasz trybu ścisłego, czy nie. To dodaje kolejną warstwę złożoności do już mylącej koncepcji i może utrudnić pisanie niezawodnego, przewidywalnego kodu.

Na koniec warto zauważyć, że rzekome „zalety” podnoszenia są naprawdę minimalne. Tak, pozwala nam odwoływać się do zmiennych i funkcji, zanim zostaną one zadeklarowane w naszym kodzie, ale czy to naprawdę takie przydatne? W większości przypadków odczytanie kodu jest o wiele bardziej przejrzyste i łatwiejsze, jeśli deklaracje są składane przed ich użyciem. Pomaga to uniknąć nieporozumień i ułatwia zrozumienie, co dzieje się w kodzie.

Podsumowując, podnoszenie jest mylącym i frustrującym aspektem JavaScript, który nie służy żadnemu celowi i służy jedynie do utrudnienia naszego życia jako programistów. Jasne, może mieć kilka drobnych zalet, ale wady znacznie je przewyższają. Dziękuję za nic, podnoszę.

W pewnym sensie budujesz swój własny labirynt i możesz się w nim po prostu zgubić.
— Marijn Haverbeke, Eloquent JavaScript: Nowoczesne wprowadzenie do programowania