Автор оригинала: FreeCodeCamp Community Member.
Многие блестящие новые черты вышли с ES2015 (ES6). И теперь, поскольку это 2020 года, предполагается, что многие разработчики JavaScript стали знакомыми и начали использовать эти функции.
Хотя это предположение может быть частично верно, все еще возможно, что некоторые из этих функций остаются загадкой для некоторых разработчиков.
Одной из функций, которые пришли с ES6, является добавлением Пусть
и Const
, который можно использовать для переменной декларации. Вопрос в том, что делает их отличными от хорошего ола « var
Что мы использовали? Если вам все еще не понятно об этом, то эта статья для вас.
В этой статье мы обсудим var
, Пусть
и Const
Что касается их объема, использования и подъема. Как вы читаете, обратите внимание на различия между ними, которые я укажу.
Вар
До появления ES6, var
Декларации правили. Есть проблемы, связанные с переменными, заявленными с var
, хоть. Вот почему было необходимо для новых способов объявить переменные для появления. Во-первых, давайте понять var
Более того, прежде чем мы обсудим эти проблемы.
Сфера вар
Область По сути означает, что эти переменные доступны для использования. var
Декларации имеют глобально находящиеся на уровне или функцию/на месте.
Примера глобальная, когда var
Переменная объявляется вне функции. Это означает, что любая переменная, которую объявлена с var
Снаружи функциональный блок доступен для использования во всем окне.
var
Является функцией, когда она объявлена в рамках функции. Это означает, что оно доступно и может быть доступно только в этой функции.
Чтобы понять дальше, посмотрите на пример ниже.
var greeter = "hey hi"; function newFunction() { var hello = "hello"; }
Здесь приветствие
глобально выделяется, потому что он существует вне функции, пока Привет
Является функцией Scoped. Таким образом, мы не можем получить доступ к переменной Привет
снаружи функции. Так что, если мы сделаем это:
var tester = "hey hi"; function newFunction() { var hello = "hello"; } console.log(hello); // error: hello is not defined
Мы получим ошибку, которая в результате Привет
не доступен за пределами функции.
Переменные VAR можно повторно объявить и обновляться
Это означает, что мы можем сделать это в пределах одной и той же области и не получите ошибку.
var greeter = "hey hi"; var greeter = "say Hello instead";
И это тоже
var greeter = "hey hi"; greeter = "say Hello instead";
Подъем Var.
Подъемник – это механизм JavaScript, где переменные и декларации функций перемещаются в верхнюю часть их объема перед выполнением кода. Это означает, что если мы сделаем это:
console.log (greeter); var greeter = "say hello"
Он интерпретируется как это:
var greeter; console.log(greeter); // greeter is undefined greeter = "say hello"
Итак, var
Переменные поднимаются на вершину их объема и инициализированы со значением undefined
Отказ
Проблема с var.
Есть слабость, которая приходит с var
Отказ Я буду использовать пример ниже, чтобы объяснить:
var greeter = "hey hi"; var times = 4; if (times > 3) { var greeter = "say Hello instead"; } console.log(greeter) // "say Hello instead"
Итак, так как Times> 3
Возвращает true, приветствие
переоценен к «Скажи привет вместо»
Отказ Пока это не проблема, если вы сознательно хочешь приветствие
Быть переопределенным, это становится проблемой, когда вы не понимаете, что переменная приветствие
уже был определен ранее.
Если вы использовали приветствие
В других частях вашего кода вы можете быть удивлены на выходе, которые вы можете получить. Это, вероятно, может привести к большому количеству ошибок в вашем коде. Вот почему Пусть
и Const
необходимы.
Позволять
Пусть
сейчас предпочтительнее для переменной декларации. Это не удивительно, так как это приходит как улучшение var
Декларации. Это также решает проблему с var
что мы только что покрыли. Давайте рассмотрим, почему это так.
Пусть блокирует
Блок – это кусок кода, ограниченного {}. Блок живет в фигурных брекетах. Все в фигурных скобках является блок.
Так что переменная объявлена в блоке с Пусть
Доступно только для использования в этом блоке. Позвольте мне объяснить это при примере:
let greeting = "say Hi"; let times = 4; if (times > 3) { let hello = "say Hello instead"; console.log(hello);// "say Hello instead" } console.log(hello) // hello is not defined
Мы видим, что используя Привет
за пределами его блока (фигурные скобки, где это было определено) возвращает ошибку. Это потому, что Пусть
Переменные – это блок.
Пусть может быть обновлена, но не повторяется.
Так же, как var
, Переменная объявлена с Пусть
может быть обновлен в пределах его объема. В отличие от var
, а Пусть
Переменная не может быть перенесена в его объеме. Так что пока это будет работать:
let greeting = "say Hi"; greeting = "say Hello instead";
Это вернет ошибку:
let greeting = "say Hi"; let greeting = "say Hello instead"; // error: Identifier 'greeting' has already been declared
Однако, если такая же переменная определена в разных областях, не будет ошибки:
let greeting = "say Hi"; if (true) { let greeting = "say Hello instead"; console.log(greeting); // "say Hello instead" } console.log(greeting); // "say Hi"
Почему нет ошибки? Это связано с тем, что оба экземпляра рассматриваются как разные переменные, так как у них есть разные области.
Этот факт делает Пусть
лучший выбор, чем var
Отказ При использовании Пусть
, вам не нужно беспокоить, если вы использовали имя для переменной до переменных раньше в качестве переменной существует только в пределах его объема.
Кроме того, поскольку переменная не может быть объявлена более одного раза в объеме, то проблема обсуждалась ранее, которая возникает с var
не бывает.
Подъем
Так же, как var
, Пусть
Декларации поднимаются к вершине. В отличие от var
который инициализируется как undefined
, Пусть
ключевое слово не инициализируется. Так что, если вы попытаетесь использовать Пусть
Переменная перед объявлением вы получите Опорная ошибка
. Отказ
Конститут
Переменные, объявленные с Const
поддерживать постоянные значения. Const
Декларации разделяют некоторые сходства с Пусть
Декларации.
Const Декларации – это блок
Как Пусть
Декларации, Const
Декларации могут быть доступны только в блоке, которую они были объявлены.
const не может быть обновлен или повторен
Это означает, что значение переменной объявлена с помощью Const
остается то же самое в его объеме. Это не может быть обновлено или повторяется. Так что если мы объявляем переменную с Const
мы не можем ни сделать это:
const greeting = "say Hi"; greeting = "say Hello instead";// error: Assignment to constant variable.
Ни это:
const greeting = "say Hi"; const greeting = "say Hello instead";// error: Identifier 'greeting' has already been declared
Каждый Const
Таким образом, декларация должна быть инициализирована во время объявления.
Такое поведение как-то отличается, когда дело доходит до объектов, объявленных с Const
Отказ В то время как Const
Объект не может быть обновлен, свойства этого объекта могут быть обновлены. Поэтому, если мы объявляем Const
Объект как это:
const greeting = { message: "say Hi", times: 4 }
Пока мы не можем сделать это:
greeting = { words: "Hello", number: "five" } // error: Assignment to constant variable.
мы можем сделать это:
greeting.message = "say Hello instead";
Это обновит стоимость приветствие. Мессаж
без возврата ошибок.
Подгонярь
Так же, как Пусть
, Const
Декларации подняты на вершину, но не инициализируются.
Так что на всякий случай, если вы пропустили различия, вот они:
var
Декларации находятся в глобальном масштабе или функция, находящиеся на определенном виде, в то время какПусть
иConst
являются блокамиvar
переменные могут быть обновлены и повторяются в его объеме;Пусть
Переменные могут быть обновлены, но не заявлены;Const
Переменные не могут быть либо обновлены, ни переписаны.- Все они подняты на вершину их объема. Но пока
var
Переменные инициализируются сundefined
,Пусть
иConst
Переменные не инициализируются. - В то время как
var
иПусть
можно объявить без инициализации,Const
должен быть инициализирован во время объявления.
Есть какие-либо вопросы или дополнения? Пожалуйста, дайте мне знать.
Спасибо за чтение:)