ES6 - let
Вместо var сейчас как правило пользуются let. То есть простое присваивание переменной сейчас не
var warriors = 3
а
let warriors = 3
Для чего вообщем было выдумывать новый синтаксис? 1-ое и самое ключевое различие let от var, это то, собственно что она формируется изнутри блока в котором обьявлена. Которое в свою очередь упрощает работу с if, while, for. К примеру, на ES5 мы пишем подобный код
Такой код выведет 5 и 5, хотя по логике в обычном языке у нас бы вывелось 5 в блоке if, а извне, например как это уже иной блок, вывелось бы 3. Но например как у нас javascript владеет кое-какими проблемами, то здесь 1 переменная на весь код, она описывается наверху кода, а в блоке if она элементарно трансформируется. Но, по обычному, мы ждем, собственно что мы создадим новую переменную изнутри if. Во избежании этой проблемы, мы можем использовать let. С ним переменная изнутри if станет независящей переменной изнутри блока
То есть, используя let, вы сможете быть уверенны, собственно что переменная всякий раз станет доступна лишь только изнутри блока. В случае если же мы удалим наружное объявление переменной, то переменная в блоке выведется нормально, а 2 console.log выдаст ошибку, например как переменна а есть лишь только в блоке и не заметна за пределами етого блока.
2-ое различие, это то, собственно что переменную let невозможно переопределить. В es5 вы сможете например написать
Етот код переопределит переменную. Let покажет ошибку про повторное переопределение переменной.
Такая же ситуация будет с циклами. Если например есть 2 цикла а мы в каждом пользуемся let, то они станут 2мя локальными переменными. А извне данная переменная станет не заметна.
3-e различие, это то, собственно что let в цикле создает отдельную переменную для всех итераций. В ES5 обыкновенная проблема с замыканиями в цикле будет выглядеть так.
Например создадим массив функций, где любая из которых станет выводится в консоль. В случае если мы вызовем елемент массива warriors, то мы увидим 10 в консоли. Ето вследствие того, собственно что переменная “i” переприсваивается и замыкание считается совокупным для всех итераций. В случае если мы пользуемся let, то такие проблемы отсутствуют. Потому что переманная создасться для каждой итерации.
Если у вас был опыт изучения бесплатного курса javascript с нуля или проходили курс по JS для начинающих хочу вам посоветовать React JS обучение на нашем youtube канале ReactWarriors
Если у вас возникли какие-то вопросы, пишите их в наш телеграмм-чат.