Молодые программисты при изучении языка программирования JavaScript часто сталкиваются с такими терминами, как «var» и «let», и не всегда понимают, в чем разница между ними. Оба термина выполняют одинаковую функцию — объявляют о создании ячейки в памяти для новой переменной. Однако такую же функцию выполняет еще один оператор, который также нужно рассматривать в кипе с этими двумя. Итак, для объявления переменных в JavaScript используют 3 оператора:
var;
let;
const.
Они выполняют одно и то же действие, но делают это совершенно по-разному. Давайте выясним, в чем разница между var, let и const.
В чем разница между var, let и const?
Шаблон использования таких операторов следующий:
var a = <значение переменной> {
//Блок с кодом, где используется переменная «а»
}
или:
let a = <значение переменной> {
//Блок с кодом, где используется переменная «а»
}
или:
const a = <значение переменной> {
//Блок с кодом, где используется переменная «а»
}
«Var» и «let» очень похожи друг на друга, и для молодых программистов разница между ними не всегда очевидна сразу, но она есть и очень существенная. «Const» немного отличается от данной пары.
Разница между «var» и «let» заключается в следующем:
Область видимости. Переменная, которая объявлена при помощи «let», видна только в пределах кода, обозначенного «фигурными скобками». Это подразумевает, что к ней невозможно обратиться за областью «скобок» даже в пределах одной функции. А переменная, которая объявлена при помощи «var», видна во всей функции даже за пределами кода, обозначенного «{...}».
Доступность переменной. Переменная, которая объявлена с использованием оператора «let», становится доступной после ее объявления. То есть невозможно в пределах одной функции сначала «изъять» значение к переменной, а только потом ее объявить. Это вносит строгость и порядок в код. Переменная, которая объявлена с использованием оператора «var», будет доступной еще до ее объявления. То есть можно к ней обратиться и провести какие-то операции, а только потом объявить ее значение. Такая разница между «let» и «var» выглядит как жесткое ограничение, однако на самом деле с использованием «let» исключаются многие непредвиденные ошибки в коде.
Использование переменной в цикле. Переменная, которая объявлена при помощи «var», объявляется один раз и используется во всех итерациях цикла, а иногда даже и после цикла. С переменной, объявленной при помощи «let», все совсем не так. Для каждой отдельной итерации цикла необходимо объявлять собственную независимую переменную «let». Такой подход помогает решить известную проблему с замыканиями.
Оператор «const»
Он также используется для объявления переменных в коде. Однако применяется только в тех случаях, когда нужно объявить переменную, которую нельзя будет изменять. То есть создает своего рода константу из переменной.
Однако не стоит путать с математическими константами типа «числа Пи». Объявляя «число Пи», также нужно будет использовать оператор «const», но его можно использовать и в любых других случаях. Например:
const banana = 15
В этом случае если переменная «banana» будет равна любому другому значению, то в коде возникнет ошибка.
Если рассматривать технические тонкости переменной «const», то тут полная идентичность с объявлением переменных при помощи оператора «let». Поэтому разница между «const» и «var» будет такой же, как и разница между «let» и «var», при этом добавляется пункт, что «const» объявляет константу. Разница между «const» и «let» заключается в том, что переменная «let» может быть перезаписана в дальнейшем, а переменная «const» не может, так как ее значение защищено и зафиксировано.
Однако нужно отметить, что в случаях, когда с помощью оператора «const» объявляется объект или массив, «постоянством» будет обладать сам объект или массив, но не значения, которые хранятся внутри. Например:
const worker = {
name : "Тихон"
age: "23"
}
В этом случае будут допустимыми изменения типа:
worker.name = "Дормидонт";
worker.age = "58";
Но недопустимыми будут изменения типа «worker = 10», это вызовет ошибку в коде. Точно такая же ситуация будет возникать и при работе с массивами-константами.
Заключение
Оператор «var» пришел в язык программирования JavaScript намного раньше, чем «let» и «const». Хоть он и считается «устаревшей технологией», он до сих пор активно применяется многими JS-разработчиками. «Let» и «const» были «введены» в язык немного позже и уже стали рекомендованными операторами для объявления переменных.
Мы специально в сегодняшней публикации объяснили, в чем разница между «let», «var» и «const», чтобы вам было легче между ними выбрать. Использование «var» не является ошибкой, однако код с этим оператором иногда ведет себя очень непредсказуемо, поэтому его применение требует понимания процессов JavaScript. «Let» и «const» более «строгие», поэтому исключают многие неочевидные ошибки в скриптах. Поэтому лучше обучаться использовать для переменных именно эти операторы.

JavaScript