Рубрики
Без рубрики

Вар, пусть, и const – в чем разница?

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

Автор оригинала: 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 должен быть инициализирован во время объявления.

Есть какие-либо вопросы или дополнения? Пожалуйста, дайте мне знать.

Спасибо за чтение:)