Przewodnik Babela po ES6 mówi:
letjest nowyvar.
Najwyraźniej jedyna różnica polega na tym, że varzakres obejmuje bieżącą funkcję , a letzakres - bieżący blok . Istnieje kilka dobrych przykładów w tej odpowiedzi .
Nie widzę powodu, by używać varkodu ES6. Nawet jeśli chcesz objąć daną zmienną całą funkcję, możesz to zrobić, letumieszczając deklarację na górze bloku funkcyjnego, co i tak powinieneś zrobić, varaby wskazać rzeczywisty zakres. A jeśli chcesz dokładniej forokreślić zakres w bloku lub czymś innym , możesz to zrobić.
Więc mój instynkt polega na tym, żeby przestać varcałkowicie używać podczas pisania kodu ES6.
Moje pytanie brzmi: czy się mylę? Czy jest jakiś uzasadniony przypadek, w którym varbyłoby lepiej niż let?
letinstrukcję 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 varczyni to bardziej zrozumiałym niż po prostu umieszczenie go na górze.
varnadal istnieje, jest zgodność wsteczna. Gdyby tak nie było, varcałkowicie by usunęli lub nigdy nie przedstawili letsię, zamiast tego zmieniając semantykę na varto, co prawdopodobnie powinno być od samego początku.
varwydają mi się cienkie i niewystarczające, aby uzasadnić posiadanie trzeciego rodzaju zmiennej, która skacze. Możesz zawęzić zakres letdo całej funkcji, po prostu umieszczając ją na górze funkcji, co jest o wiele wyraźniejsze w zamiarze niż pisanie varw bloku (aby wyciągnąć go z tego bloku, abyś mógł następnie użyć go poza blokiem - dziwne). Ostrzega, że jeśli wybierzesz letfunkcję, 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, varwydają 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ą.
varjako świadomego wskaźnika, że zmienna ta ma być objęta zakresem całej funkcji, może być przydatną konwencją „samok dokumentującą” .