Посібник Бабеля по 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
в якості свідомого індикатора того, що ця змінна призначена для визначення всієї функції, може бути корисною умовою "самодокументування ". .