skip to main content

var/let

js

Кратко 🔗

Переменные в JavaScript хранят значения, которыми оперирует код. Для создания переменных используется var или let.

🤖 Использование var оправдано, если ты пишешь код для legacy браузеров времен IE 11 или Opera mini. Во всех остальных случаях лучше использовать let и const, так как они не позволят допустить ошибки, приводящие к неправильным значениям в переменных или перезатиранием глобальных переменных. Оба этих случая описаны ниже.

Как пишется 🔗

var varname = value

varname Имя переменной. Может использоваться любой допустимый идентификатор.

value Значение переменной. Любое допустимое выражение.

Допустимые символы для имени переменной: буквы, цифры, символы $ и _. Первый символ не должен быть цифрой.

Как это понять 🔗

Возможные варианты объявления переменной

var varname1 // Объявление переменной
var varname2, varname3 // множественное объявление переменных
var varname4 = "test" // объявление переменной + инициализация
var varname5 = true,
varname6 = false // множественное объявление + инициализация

Объявление переменной и ее инициализация могут быть произведены в разных местах скрипта, но пользоваться этим нужно с осторожностью, так как это может приводить к логическим ошибкам — о них чуть позже.

Пример 🔗

Объявление переменной всегда "всплывает" в начало функции или кода.

console.log(a)
var a

Сначала это кажется замечательным, ведь можно объявлять переменные где угодно. Но это одновременно и хорошо и плохо.

Если объявление и инициализацию переменных делать вначале функций и скриптов, то никакой разницы не будет заметно. Выведет 10, как и ожидалось:

var a = 10
console.log(a)

А в этом примере будет уже совсем другой результат:

console.log(a)
var a = 10

Результат — undefined, почему? 🤔

Объявление функции всплыло в начало кода, а вот присваивание значения осталось на том же месте. Как результат — на момент console.log а еще было undefined, а только после стало равным 10.

В случае применения let вместо var данный код не исполнился, по причине что let и const переменные начинают существовать строго с того момента, где происходит их объявление, всплытия не происходит.

В работе 🔗

Миша 👨‍🔧

🛠 При использовании let будет легче находить ошибки и не допускать такого — будет сразу вылезать ошибка использования переменной, что позволит переписать код правильно.

Все окей — выводим значение переменной «a»:

let a = 10
console.log(a)

Ошибка, попытка использовать переменную «a» до момента объявления:

console.log(a)
let a = 10

Нет ошибки, выводится последнее инициализированное значение для объявленной переменной a:

var a = 0
var a = 10
console.log(a)

Ошибка, переменная «a» уже создана и равна нулю:

let a = 0
let a = 10
console.log(a)

Автор: Миша 👨‍🔧