Посібник Бабеля по ES6 говорить:
letє новимvar.
Очевидно, єдина відмінність полягає в тому, що varвін привласнюється до поточної функції , в той час як letотримує масштаб до поточного блоку . У цій відповіді є кілька хороших прикладів .
Я не бачу причин використовувати varв коді ES6. Навіть якщо ви хочете прив’язати дану змінну до всієї функції, ви можете це зробити let, поставивши декларацію у верхній частині функціонального блоку, що саме ви повинні робити з тим, varщоб у будь-якому випадку вказати фактичну область застосування. І якщо ви хочете обміняти щось більш точне в forблоці чи щось таке, то можете зробити і це.
Тож мій інстинкт - varвзагалі припинити використання під час написання коду ES6.
Моє запитання: чи я помиляюся в цьому? Чи є законний випадок, де varбуло б кращим let?
letзаяву прямо у верхній частині функції, я думаю, це так само очевидно, що ви мали намір застосувати її до всієї функції. Я не думаю, що використання varробить це більш зрозумілим, ніж просто розміщення його у верхній частині.
varвсе ще є зворотна сумісність. Якби не це, вони були б видалені varвзагалі або взагалі ніколи не вводилися let, замість цього змінювали семантику того, varщо воно, напевно, повинно було бути весь час.
varмені здаються тонкими, і недостатньо, щоб гарантувати наявність третього типу змінної, яка стрибає навколо. Ви можете охопити letцілу функцію просто, розмістивши її у верхній частині функції, що набагато чіткіше за наміром, ніж писати varв блок (для того, щоб вона була виведена з цього блоку, щоб потім ви могли використовувати її поза блоком - дивно). Він попереджає, що якщо ви застосуєте функцію letдо функції, то "це просто позиція, яка сигналізує про різницю, а не синтаксис", але я думаю, що це добре.
var. приклади, які він подає для зберігання, varздаються надуманими - і базуються на серйозних помилках кодування. Набагато краще зіткнутися з помилкою і змусити виправляти такі помилки, ніж використовувати мовні функції, які дозволяють людині піти з нею! Що далі, радимо загорнути все в спробу / ловити, щоб запобігти збоям? Решта цього посилання хороша, але я зовсім не згоден з цією частиною.
varв якості свідомого індикатора того, що ця змінна призначена для визначення всієї функції, може бути корисною умовою "самодокументування ". .