December 1, 2019

Переменные. const, let, var

Итак, приступим к разбору операторов, которые дают жизнь переменным.

Как я и говорил в предыдущей статье, у нас имеется целых 3 оператора для данного действа. Разберем каждый по порядку.

var

var a = 1;

С помощью данного оператора переменные определял еще мой дед, а узнал он, что так нужно делать от своего деда. Короче, это в прошлом. Это чаще всего можно найти только в проектах с legacy-кодом, т.е., в проектах, которые были давно написаны и их не разу не рефакторили(не обновляли код под новые стандарты). Но, рассказать об этом все равно стоит, так как это основа.

Оператор var определяет переменную в текущей области видимости.

Обычно, область видимости переменной - это функция, внутри которой она объявлена. Но, если переменную объявили не внутри функции, то ее область видимости - глобальный объект window, а это, на секундочку, весь документ.

Так же переменные объявленные данным оператором, умееют "всплывать", т.е. переменную можно вызвать еще до ее определения и это не вызовет никаких ошибок. Пример:

console.log(a); //выведет: undefined
var a = 1;

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

let

Этот оператор чертовски похож на оператор var. Главное их различие - область видимости(но об этом мы говорим чуть позже).

Если попробовать повторить тот же самый код:

console.log(a); //выведет: ReferenceError: a is not defined
let a = 1;

Как видишь, на этом моменте возникнет ошибка, в которой JS говорит тебе, что ты косорукий и пытаешься использовать топор, когда его еще и не придумали.

Оператор let работает более предсказуемо, с ним проще, он твой дружище. Не используй var - используй let.

const

const a = 1;

Оператор очень обидчивый, и по чепухе всякой его лучше не дергать. Переменная объявленная с помощью этого оператора - это коробка, в которую ОБЯЗАТЕЛЬНО нужно что-то положить, а если уже положил, то не трогать!

На содержимое такой переменной можно только смотреть, любоваться. И даже не думай поменять содержимое такой переменной. У тебя не получится. Совсем. Вообще.

Все, что у тебя получится, так это словить ошибку: "Uncaught TypeError: Assignment to constant variable", а она как известно, сильнее нас грешных.

Коротко и без аналогий: переменная объявленная этим оператором обязательно должна иметь значение и его нельзя изменить.

Ну вот и статеечке конец, а кто слушал...

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

А я сторонник того, чтобы понимание приходило во время практики. Поэтому максимально усвой то, что написано выше, а все что не понятно - поймешь со временем.