Czy jest jakiś sens używania nadal słowa kluczowego var
w ES6 do deklarowania zmiennych przez osoby, które rozumieją działanie var
, let
i const
(nawet w trybie strict), znają różnice między nimi i wiedzą, na czym polega hoisting, zasięg funkcji, zasięg bloku, umieją w poprawny sposób pisać kod wykorzystujący zmienne (liczniki) pętli później niż od razu itp? Nie pytam o takie zalety, które mogą powodować ograniczenie możliwości popełnienia błędu lub zrozumienia kodu przez programistę bez odpowiedniej wiedzy.
Kyle Simpson w swojej książce Tajniki języka JavaScript. Zakresy i domknięcia
pisze:
Być może trudno w to uwierzyć, ale zakresu bloku nie należy traktować jako bezwarunkowego zamiennika dla zakresu funkcji tworzonego przez var. Obie funkcjonalności mogą współistnieć, programiści mogą i powinni odpowiednio stosować obie techniki (zakres funkcji i zakres bloku), aby tworzyć kod lepszy, czytelniejszy i łatwiejszy w obsłudze.
Autor nie tłumaczy, dlaczego warto w niektórych sytuacjach nadal używać var
. Ja mam wrażenie, że autor jest fanatykiem i szkoda mu rozstawać się z poznanymi w bardzo ponadprzeciętnym stopniu zasadami działania języka JavaScript, dlatego czasami namawia do używania takich funkcjonalności, o których zwykle mówi się, że są przestarzałe albo niebezpieczne. W tym drugim przypadku autor zaleca dobre ich poznanie i wykorzystanie ich zalet w prawidłowy sposób.
Gdy szukam opinii w internecie, to widzę dużo takich, które zachęcają do używania zawsze let
i const
zamiast var
.
Czy są jakieś korzyści z używania var
poza zachowaniem zgodności ze starszymi wersjami ES?