Przewodnik Babela po ES6 mówi:
let
jest nowyvar
.
Najwyraźniej jedyna różnica polega na tym, że var
zakres obejmuje bieżącą funkcję , a let
zakres - bieżący blok . Istnieje kilka dobrych przykładów w tej odpowiedzi .
Nie widzę powodu, by używać var
kodu ES6. Nawet jeśli chcesz objąć daną zmienną całą funkcję, możesz to zrobić, let
umieszczając deklarację na górze bloku funkcyjnego, co i tak powinieneś zrobić, var
aby wskazać rzeczywisty zakres. A jeśli chcesz dokładniej for
określić zakres w bloku lub czymś innym , możesz to zrobić.
Więc mój instynkt polega na tym, żeby przestać var
całkowicie używać podczas pisania kodu ES6.
Moje pytanie brzmi: czy się mylę? Czy jest jakiś uzasadniony przypadek, w którym var
byłoby lepiej niż let
?
let
instrukcję bezpośrednio u góry funkcji, myślę, że to równie oczywiste, że zamierzałeś objąć ją całą funkcją. Nie sądzę, że używanie var
czyni to bardziej zrozumiałym niż po prostu umieszczenie go na górze.
var
nadal istnieje, jest zgodność wsteczna. Gdyby tak nie było, var
całkowicie by usunęli lub nigdy nie przedstawili let
się, zamiast tego zmieniając semantykę na var
to, co prawdopodobnie powinno być od samego początku.
var
wydają mi się cienkie i niewystarczające, aby uzasadnić posiadanie trzeciego rodzaju zmiennej, która skacze. Możesz zawęzić zakres let
do całej funkcji, po prostu umieszczając ją na górze funkcji, co jest o wiele wyraźniejsze w zamiarze niż pisanie var
w bloku (aby wyciągnąć go z tego bloku, abyś mógł następnie użyć go poza blokiem - dziwne). Ostrzega, że jeśli wybierzesz let
funkcję, to „to tylko pozycja, która sygnalizuje różnicę, a nie składnia”, ale myślę, że to dobrze.
var
. przykłady, które przedstawia dla zachowania, var
wydają się wymyślone - i są oparte na poważnych błędach kodowania. O wiele lepiej jest popaść w błąd i zostać zmuszonym do naprawienia takich błędów, niż do korzystania z funkcji językowych, które pozwalają na to! Co dalej, radzimy zawinąć wszystko w try / catch, aby zapobiec awariom? Reszta tego linku jest dobra, ale w ogóle nie zgadzam się z tą konkretną częścią.
var
jako świadomego wskaźnika, że zmienna ta ma być objęta zakresem całej funkcji, może być przydatną konwencją „samok dokumentującą” .