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/”