JavaScript, let срещу var

Стандарният начин в JavaScript за деклараиране на променлива е чрез ключовата дума var. Обаче var има един доста загадачен проблем или по-скоро недостатък или когато в JavaScript се опитаме да извикаме недекларирана променлива ще получим грешка.

console.log(x); // x is not defined

Дотук всичко е норамално, получаваме си грешка, че променливата x не дефинирана. Но ако направим нещо подобно, няма да получим грешка а само undefined.

if (false) {
    var x = 10;
}

console.log(x); // undefined

Интересното тук е че if условието не се изпълнява защото е false, но все пак се декларира променлива. Това е доста голям недостаък не само на ключовата дума var но и на самият JavaScript, честно казано за мен това е много ама много голяма глупост.

Точно тук идва ключовата дума let, всъщност това е новият начин за деклариране на променлива в EcmaScript стандарта. Едно нещо което искам да подчертая е че let не заменя var, a просто е негова по-добра алтернатива. Ако направим същият пример но този път използваме let ще си получим грешка че променливата не е дефинирана което всъщност е правилният резултат.

if (false) {
    let x = 10;
}

console.log(x); // x is not defined

Като заключение бих казал че let e доста по-добър вариант за деклараиране на променливи в JavaScript отколкото старият начин с var. Aко използваме let шансът да получим подобни състияния е много по-малък.