Термины var, let и const в JavaScript немного сбивают с толку. Итак, в этом кадре мы рассмотрим различия между этими терминами.

ES2015 представил множество новых функций (ES6). В настоящее время предполагается, что многие разработчики JavaScript знакомы с этими функциями и уже начали их использовать.

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

Добавление let и const, которые можно использовать для объявления переменных, является одной из новых функций ES6. Вопрос в том, что отличает их от обычных var, которые мы использовали? Если вы все еще в замешательстве, эта статья для вас.

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

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

Область действия переменной

Var: переменные, объявленные с помощью var, находятся в области видимости функции.

Когда переменная объявлена ​​внутри функции, она находится в области действия функции. Это означает, что он присутствует и доступен только внутри этой функции.

Рассмотрим пример ниже, чтобы лучше понять.

В. Вкладка, когда вы запустите код, вы увидите ошибку, так как не определено, потому что переменные var доступны только в области действия функции.

переменные var могут быть повторно объявлены и обновлены

Это означает, что мы можем выполнить это в той же области, не получая ошибки.

и это тоже

Поднятие переменной

Подъем — это метод JavaScript, который перемещает переменные и объявления функций в верхнюю часть их области видимости перед выполнением кода. Это указывает на то, что если мы выполним следующее:

Это интерпретируется следующим образом:

Таким образом, переменные Var поднимаются на вершину своей области видимости и получают значение «undefined».

Проблема с var

У использования «var» есть недостаток. Я буду использовать следующий пример для демонстрации:

В результате, поскольку times › 3 возвращает true, телефон переименовывается в «Samsung». Хотя это не проблема, если вы собираетесь переопределить телефон, это становится проблемой, если вы не понимаете, что переменный телефон уже был объявлен.

Если вы использовали телефон в других местах своего кода, вы можете быть шокированы результатами. Это почти наверняка приведет к множеству ошибок в вашем коде. Поэтому нужны let и const.

Пусть

Let в настоящее время является рекомендуемым синтаксисом объявления переменных. Это неудивительно, учитывая, что это улучшение по сравнению с объявлениями var. Это также устраняет проблему с переменной, которую мы только что обсуждали. Подумайте, почему это так.

let ограничен блоком

Let: переменные, объявленные с помощью let, находятся в области действия блока.

В результате переменная, определенная в блоке с помощью let, может использоваться только внутри этого блока. Поясню на примере:

Использование телефона вне его блока (фигурные скобки там, где он был объявлен) приводит к ошибке. Это связано с тем, что переменные let имеют блочную область видимости.

Let может быть обновлен, но не объявлен повторно.

Переменная, определенная с помощью let, как и var, может быть изменена внутри ее области видимости. Переменная let, в отличие от var, не может быть повторно объявлена ​​внутри ее области видимости. Итак, пока это работает:

Это вернет ошибку:

Однако не будет проблем, если одна и та же переменная будет объявлена ​​в разных областях видимости:

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

Из-за этого let лучше, чем var. При использовании let вам не нужно беспокоиться о том, использовали ли вы уже имя переменной, поскольку переменная существует только внутри своей области видимости.

Кроме того, поскольку переменная не может быть объявлена ​​более одного раза внутри области видимости, ранее описанная проблема «var» не существует.

Поднятие сдачи

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

Константа

Переменные, объявленные с использованием ключевого слова const, сохраняют свои постоянные значения. Объявления const аналогичны объявлениям let.

Const: переменные, объявленные с помощью Const, находятся в области действия блока.

Объявления const, как и объявления let, могут быть доступны только внутри блока, в котором они были объявлены.

CONST нельзя обновить или переопределить.

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

ни это:

В результате каждое объявление константы должно быть инициализировано во время объявления.

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

Пока мы не можем этого сделать:

Мы можем сделать это:

Это изменит значение phone.message без ошибки.

Поднятие const

Объявления const, такие как let, поднимаются наверх, но не инициализируются.

Итак, если вы пропустили это, вот отличия:

  • Объявления Var имеют глобальную или функциональную область видимости, в то время как объявления let и const имеют блочную область видимости.
  • Переменные var в пределах своей области действия могут быть изменены и объявлены заново; пусть переменные могут быть обновлены, но не объявлены повторно; и константные переменные не могут быть обновлены или повторно объявлены.
  • Все они были подняты на пик своего размаха. Однако, в отличие от переменных var, переменные let и const не инициализируются значением undefined.
  • В отличие от var и let, которые могут быть объявлены без инициализации, константа const должна быть инициализирована в процессе объявления.

Спасибо за ваше время:)