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

Как объявить JavaScript переменные: взгляд на пусть, const и var

Shirshendu Bhowmick. С старом JavaScript у нас был только один способ объявить переменную, и это было с var, как var. Он создаст переменную, называемую X и назначаю значение 10 к нему. Теперь с современным JavaScript ES6 у нас есть 3 разных способа

Shirshendu Bhowmick.

С старом JavaScript у нас был только один способ объявить переменную, и это было с вар , как вар . Он создаст переменную, называемую X и назначаю значение 10 к нему. Теперь с Modern ES6 JavaScript у нас есть 3 разных способа объявить переменную: Пусть С const и вар . Мы поговорим о Пусть & const потом. На данный момент давайте сосредоточимся на var Отказ

вар

Мы уже знаем, как объявить переменную с вар . Давайте теперь будем ссылаться на какой-код, чтобы понять var должным образом.

var x = 20;
function foo() {
    var y = 10;
    console.log(x);
    console.log(y);
}
foo(); // will print 20 and 10
console.log(x); // will print 20
console.log(y); // will throw a reference error

Те, кто знакомы с C или C ++, могут понять, почему вывод так. Это потому, что х находится в глобальном масштабе а также y находится в объеме функции Foo. Как функция Foo имеет доступ к глобальному объему, изнутри функции мы можем получить доступ к обоим х и y Отказ Печать х также идет хорошо, потому что как х находится в глобальном масштабе, мы можем получить доступ к этому из повсюду. Вещи идут не так, когда мы пытаемся получить доступ к y от глобальной массы, потому что y ограничен только сферой функции.

Похож на C или C ++, верно? Нет. Посмотрим, почему нет.

var x = 20;
function foo() {
    var y = 10;
    {
        var z = 30;
    }
    console.log(x);
    console.log(y);
    console.log(z);
}
foo();

Как вы думаете, что вывод кода будет? Если вы думаете, что в строке будет ссылочная ошибка console.log (z) Затем вы правы с точки зрения C или C ++. Но с JavaScript это не так. Приведенный выше код будет печать 20 10 30.

Это потому, что в JavaScript с var , В отличие от C и C ++, у нас нет никакой масштабы уровня блока. У нас есть только глобальный и функциональный уровень объема. Итак, z падает под функцией объема Foo.

Теперь у нас еще один пример:

var x = 20;
var x = 30;
console.log(x); // this will print 30

В C или C ++, если мы объявляем переменную более раз в той же области, мы получаем ошибку. Но это не так с var в JavaScript. В приведенном выше примере это просто переопределяет х и назначает значение 30.

Давайте рассмотрим следующие фрагменты кода:

function foo() {
    x = 20;
    console.log(x);
}
foo();
console.log(x);

Приведенный выше код будет печать 20 20. Так что происходит здесь? Если вы объявите переменную в любом месте без var Ключевое слово оно становится частью глобальной массы. Это доступно как от внутри, так и снаружи фюра .

'use strict'
function foo() {
    x = 20;
    console.log(x);
}
foo();
console.log(x);

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

позволять

Теперь пришло время посмотреть на Пусть Отказ Пусть Новый VAR в ES6 Но с некоторыми различиями.

let x = 20;
function foo() {
    let y = 10;
    {
        let z = 30;
    }
    console.log(x);
    console.log(y);
    console.log(z);
}
foo();

Помните, что в JavaScript, var не имеет возможности уровня блока? Сейчас на уровне блокироны вернулись с Пусть Отказ Если вы выполните вышеуказанный код, вы получите ссылочную ошибку в строке console.log (z) Отказ Переменная z объявлено с Пусть Сейчас находится в другом объеме уровня блока и не доступен за пределами этой области.

let x = 10;
let x = 20; // will throw an error

Переоснащение переменных с Пусть не разрешено.

var x = 10;
let y = 20;
console.log(window.x); // 10
console.log(window.y); // undefined

Глобальные переменные, объявленные глобально с var добавляются к глобальный Объект, окно В случае браузеров. Переменные, объявленные по всему миру с данными, не добавляются в окно (Глобальный объект). Хотя они доступны во всем мире, это так, как будто это там Но ты не видишь это.

console.log(x); //undefined
console.log(y); //reference error
var x;
let y;

В отличие от var , Пусть Переменные не инициализируются с неопределенными до оценки их определений. Если вы попытаетесь получить доступ к переменной до того, как вы столкнулись с опорной ошибкой. Это также известно как временная мертвая зона. Простые слова, поднятие доступно только с var не с Пусть & const Отказ

конститут

const Стенды для постоянной, это очень похоже на Пусть Отказ Единственные различия – ее значение не может быть изменена, и она должна быть инициализирована, где вы его объявляете.

const x = 20;
console.log(x); // will print 20
x = 30 // will throw an error

Это не то, что в случае const Объекты Вы можете изменить свойство этого объекта – только что вы не можете переназначить const Переменная.

const obj = {firstName: "James", lastName: "Bond"}
console.log(obj); // will print the obj object
obj.firstName = "Ruskin";
console.log(obj); // will print the obj object, it has new firstName
obj = {firstName: "James", lastName: "Bond"}; // will throw an error

Также как упоминалось ранее, вы должны инициализировать const Переменная, вы не можете сохранить ее неинициализированы.

const x; // will throw an error
some other code;

Это все для этой статьи – увидимся позже!

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

Оригинал: “https://www.freecodecamp.org/news/how-to-declare-javascript-variables-a-look-at-let-const-and-var-5d801c70c377/”