Переменные. 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"
, а она как известно, сильнее нас грешных.
Коротко и без аналогий: переменная объявленная этим оператором обязательно должна иметь значение и его нельзя изменить.
Ну вот и статеечке конец, а кто слушал...
Если ты сейчас понял, что ты ничего не понял, то не переживай. Это не ты тупой, и даже не я. Со всеми этими областями видимости, которые ты сейчас вообще не понимаешь мы столкнемся еще не раз в следующих статьях.
А я сторонник того, чтобы понимание приходило во время практики. Поэтому максимально усвой то, что написано выше, а все что не понятно - поймешь со временем.