Подскажите пожалуйста, в чем различия между этими переменными? в каких случаях что лучше использовать?
Первое это то что let существует только в том блоке в котором она обьявлена, в отличии от var, вот пример:
var some_var = 5;
if (true) {
var some_var = 10;
alert(some_var); // 10 (внутри блока)
}
alert(some_var); // 10 (снаружи блока то же самое)
let some_let = 5; //
if (true) {
let some_let = 10;
alert(some_let); // 10 (внутри блока)
}
alert(some_let); // 5 (снаружи блока значение не изменилось)
Второе это то что var существуют до обьявления в глобальной переменной window, а let существуют только после создания, тоесть если вызвать переменную var до момента создания то нам покажет что такая переменная есть но значение у неё undefined, если же такое попробовать провернуть с let то будет ошибка и нам скажут что такой переменной нет.
Еще одна деталь это то что в цикле for например если итератор объявлен через var то он один а если let то при каждой итерации создается новая переменная.
Теперь зная различия думай в каких ситуациях что лучше)