Далее на странице...
Рассмотрим три различных способа объявления переменных в JavaScript при помощи ключевых слов var, let и const.
До настоящего момента на этом сайте для объявления переменных всегда использовалось ключевое слово var. Но, начиная с версии ES6, для объявления переменных рекомендуется использовать ключевые слова let и const.
Для стандарта ES6 (это более современный JavaScript) var - это уже старый способ объявления переменных.
Чем отличаются способы объявления переменных при помощи ключевых слов var, let и const? И какой способ использовать в различных ситуациях?
На этот вопрос сразу не будет полноценного ответа и здесь пока в общих чертах пойдет речь о ключевых словах var, let и const.
Если сейчас говорить о том, что let - это область действия блока, а var - область действия функции. То для тех, кто только начинает изучать JavaScript - это знать бесполезно. Потому что в рамках этого курса нам пока еще неизвестно, что такое блок или что есть функция.
Ключевое слово let
Рассмотрим пример, в котором для объявления переменной используется ключевое слово let.
Пример 1.1
let age = 30;
age = 31;
В примере переменной age присвоено значение 30. Далее этой же переменной присваивается другое значение - 31. Итак, значение переменной, объявленной при помощи ключевого слова let, изменилось с 30 на 31. Этой же переменной можно позже присвоить какое-либо другое значение.
Присвоить другое значение переменной или переназначить переменную. Или же произошла мутация переменной. Было 30, стало 31 - мы изменили переменную. Мутация переменных - это термин, который Вы будете слышать постоянно в Javascript-мире.
Лично для меня термин мутация переменных немного странен и не привычен. Но пусть он будет иметь место, и раз уж он используется автором этого курса, то и я его буду порой использовать. Ближайший синоним этого слова - изменение. И в случае с переменными их мутация означает - изменение значений переменных.
Итак, нам постоянно будет нужно, чтобы переменные мутировали (меняли свое значение в пределах одного или нескольких различных типов данных). Это нормально в работе с Javascript-кодом и для этого идеально подходит ключевое слово let.
Также ключевое слово let подходит для случаев объявления пустой переменной или переменной без значения.
Пример 1.2
let year;
console.log(year);
year = 1991;
console.log(year);
Результат
undefined
1991
Из примера видно, что сначала была объявлена пустая переменная let year;, а позже ей было присвоено значение year = 1991;. Переменная была переназначена или произошло переназначение переменной.
Иногда так приходится делать на практике. Например, когда мы хотим объявить все переменные в верхней части файла, а позже присвоить им значения в самой программе. Это удобно, учитывая, что порой, нам не известно заранее значение той или иной переменной и приходится ориентироваться по ситуации.
Ключевое слово const
В других случаях, когда предполагается, что значение переменной остается неизменным, для объявления переменных используется ключевое слово const.
Значение переменной, объявленной при помощи ключевого слова const, не может быть изменено. Такая переменная не может быть переназначена. Рассмотрим пример.
Следущий код не будет работать. Подобная запись будет причиной ошибки в консоли.
Пример 2.1
const birthYear = 1982; //год рождения
birthYear = 1991; //переназначение переменной - Ошибка
Результат
"Uncaught TypeError: Assignment to constant variable"
Мы пытаемся присвоить постоянной переменной другое значение. Этого сделать нельзя, о чем нам и сообщается.
Технически такая переменная называется неизменяемая переменная. Переменная, которая не может мутировать, не может изменить своего значения.
В рассмотренном примере у переменной, объявленной при помощи ключевого слова const, соответствующим образом подобрано имя birthYear (год рождения). И действительно, в жизни, год рождения какого-либо индивида изменить нельзя. Ранее мы работали с переменной age, объявленной при помощи ключевого слова let. И здесь логически все верно - age означает возраст, который, конечно же, меняется. Это еще раз говорит о том, что переменным нужно давать осмысленные имена и использовать для их объявления разные ключевые слова const или let. Это имеет смысл.
Тот факт, что переменная? созданная при помощи ключевого слова const, является неизменной, также означает, что при помощи ключевого слова const нельзя объявить пустую переменную (то есть переменную без значения).
Следующая запись не является верной - она не допустима.
Пример 2.2
const job; //Ошибка
При этом в консоли мы увидим синтаксическую ошибку:
"Uncaught SyntaxError: Missing initializer in const declaration"
Это ошибка инициализации при объявлении переменной в const (в переводе константа).
Напомним, что это нормально работает в случае в переменной let - при этом допустимо объявлять переменную без значения.
При использовании ключевого слова const для объявления переменной, она обязательно должна быть инициализирована, то есть ей должно быть присвоено значение.
Теперь, зная эти два способа объявления переменных, может возникнуть вопрос: что предпочтительно использовать для объявления новой переменной: ключевое слово let или ключевое слово const.
Хорошей практикой является писать чистый код. При этом всегда по умолчанию рекомендуется использовать const, а let только в тех случаях, когда вы действительно уверены, что значение переменной будет меняться.
В примере выше ключевое слово let использовалось для объявления переменной age, что означает возраст. Конечно, в жизни возраст меняется, и по этой причине логично использовать let для объявления переменных и в других подобных по логике случаях. Однако если вы знаете, что в вашей программе эта переменная не будет менять своего значения, то и здесь, не смотря на логику, рекомендуется использовать ключевое слово const.
Хорошей практикой является наличие в коде небольшого числа мутирующих переменных (переменных меняющих свое значение). Потому что изменяющиеся переменные содержат потенциал появления ошибок.
Итак, для объявления переменных используйте ключевое слово const так часто, как это возможно.
Ключевое слово var
Рассмотрим третий способ объявления переменных в Javascript - при помощи ключевого слова var.
Хотя этот способ объявления переменных был для многих привычным, но, начиная со стандарта ES6, он является устаревшим и его рекомендуется избегать.
Однако мы все равно должны знать, как работает способ объявления переменных при помощи ключевого слова var. Потому что этот способ можно встретить, в старых основах кода или некоторых старых учебниках/сайтах, которые есть в интернете и которые не подвергались корректировке.
Итак, давайте посмотрим, как это работает. Использование ключевого слова var на первый взгляд аналогично использованию let.
Используя var, мы также можем объявить переменную, присвоить ей какое-либо значение, которое потом можем изменить. Или же объявить переменную без значения.
Пример 3.1
var job = 'teacher';
job = 'programmer';
Такой код работает нормально, в этом не ошибки - в принципе это допустимо.
Несмотря на то, что использование var и let выглядит очень схоже. На самом деле ключевые слова var и let довольно разные.
Обо всех различиях между всеми тремя ключевыми словами речь будет идти позже.
Пусть вас не смущает, что возможно не в первый раз звучат такие слова: "вы узнаете об этом позже". Суть в том, что обучение на самом деле не линейно. И оно не может проходить линейно.
Иногда некоторые более продвинутые вещи нужны и объясняются сразу, даже без их понимания. И это не проблема, потому что в итоге вы их поймете.
Но в данном случае, и об этом уже шла речь в начале статьи: сейчас действительно бесполезно вдаваться в бо?льшие подробности о различиях между ключевыми словами var, let и const. Об этом действительно будет сказано позже. Сейчас это бесполезная информация.
Сейчас же важно лишь одно: на данный момент для объявления переменных будут использоваться ключевые слова let и const и никогда var.
Не используем ключевые слова
У некоторых может возникнуть заблуждение, что для объявления переменных не нужно использовать ключевые слова вообще. И что на самом деле это совсем не обязательно. Ведь следующий код будет работать нормально.
Пример 4.1
lastName = 'Ivanov';
console.log(lastName);
При этом здесь не используется ни одно из ключевых слов let, const или var. Но на самом деле это плохая идея - так работать нельзя.
Потому что этот код не создает переменную в текущей области видимости. На самом деле Javascript создал свойство глобального объекта. И снова здесь следует сказать, что все это вы поймете немного позже.
Сейчас важно лишь то, что всегда следует правильно объявлять переменные. Никогда не используйте записи подобного рода lastName = 'Ivanov';, то есть без настоящего объявления переменной.
Понимание этих вещей - это уже большой прогресс, даже если наш код на самом деле еще ничего не делает. И мы пока не создавали никакого реального приложения.
Сначала нужно получить больше базовых знаний языка Javascript. Это действительно важно. И по этой причине уделяется такое детальное внимание всем мелочам. Начинающим разработчикам следует это понимать и нужно набраться терпения. Не стоит торопиться. Всему свое время. Впереди, даже на этом - первом этапе обучения, нас ждет хороший материал по Javascript.
Далее речь пойдет о строках.