Автор оригинала: FreeCodeCamp Community Member.
Srishti Gupta
var , Пусть и Const являются ключевыми словами, которые используются для объявления переменных в JavaScript. var Поставляется под Ecmascript 5-е издание (AKA ES5), тогда как Пусть и Const Подпадайте под категорию Ecmascript 6-е издание (AKA ES6 и ES2015).
Поскольку JavaScript не имеет никакой проверки типа, либо из этих ключевых слов можно использовать для объявления переменной любого типа (DataType) в JavaScript.
Хотя все три ключевых слова используются для той же цели, они разные.
«Давай» против «Const»:
Изменение стоимости в будущем
Рассмотрим пример, указанный ниже:
let iChange = 11;iChange = 12;
console.log(iChange);
Выход:
12
На первой строке переменная iChange объявлен с использованием Пусть Ключевое слово и инициализируется со значением 11. Когда вы приходите к следующей строке, переменная я меняю снова присваивается новое значение, которое составляет 12. Изменение значений переменных, объявленных с использованием Пусть ключевое слово разрешено. Когда на последней строке вы пытаетесь распечатать значение переменной iChange Вы правильно получаете обновленное значение 12.
const PI = 3.14;PI = 22/7;
console.log(PI);
Выход:
Uncaught TypeError: Assignment to constant variable
Здесь переменная ПИ объявлен с использованием Const Ключевое слово и инициализируется со значением 3.14 на первой строке. Когда вы приходите к следующей строке, переменная PI обновляется с новым значением 22/7 Отказ Изменение значений переменных, объявленных с использованием Const Ключевое слово не допускается. Вот почему вторая строка бросает ошибку, показанную на выходе, потому что вы пытаетесь назначить новое значение для постоянной переменной. Поэтому помните, что переменные объявлены с использованием Const Ключевое слово только для чтения и не может быть переназначена любое значение.
Как упоминалось ранее, обязательно инициализировать постоянную при объявлении его. Давайте посмотрим следующее утверждение кода:
const PI;
Выход:
Uncaught SyntaxError: Missing initializer in const declaration
Вы знаете, что вы не можете обновить постоянную в будущем. Если вы не инициализируете постоянную во время своей декларации, вы не сможете назначить какое-либо значение для этого! Вот почему вы получаете SyntaxError Когда вы оставляете постоянный неинициализированный.
Как вы думаете, будет выходной код, приведенный ниже?
const passengerBus = {wheels: 8, passengers: 40}passengerBus.passengers = 50;console.log(passengerBus);
Как вы думаете, ошибка будет брошена ошибка? Давайте проверим вывод. Вот так.
Выход:
{ wheels: 8, passengers: 50 }До сих пор вы узнали, что переменные объявлены с использованием Const Ключевое слово не может быть назначено какое-либо другое значение. Хотя это правда, есть другая сторона истории тоже. Несомненно, вы не можете назначить новое значение константу, но вы можете манипулировать существующим значением, если это объект или массив.
В указанном выше коде вы не изменяете все значение, назначенное для константы пассажирский пункт Но вы манипулируете недвижимостью внутри него. Вы можете добавить/удалить/обновить свойство внутри объекта, объявленного с помощью Const ключевое слово.
Похоже можно сделать с массивами тоже. Вы можете добавить добавление/удаление/обновление элемента внутри массива, объявленного с помощью конститут ключевое слово.
const android = ['Marshmallow', 'Noughat', 'Oreo'];arr[3] = 'Pie'; // adding new version
console.log(android);
Выход:
['Marshmallow', 'Noughat', 'Oreo', 'Pie']
Теперь, учитывая, что ключевые слова Пусть и Const Принадлежите к той же категории, следующие пункты зарубеют различия между переменными, объявленными с использованием Пусть / Const Ключевые слова и переменные, объявленные с использованием var ключевое слово:
«Пусть» (или «const ‘) против’ var ‘:
Сфера
Рассмотрим следующий пример:
function foo() { for (let i = 0; i < 3; i++) { console.log(i); // statement 1 } console.log(`All eyes here please: ${i}`); // statement 2}foo();
Выход:
012Uncaught ReferenceError: i is not defined
Переменная Я объявлен с использованием Пусть Ключевое слово внутри блока для петли. Это означает, что когда заканчивается блок для петли, переменная Я теряет свой объем и больше не доступен за пределами фигурных скобок блока для петли. Таким образом, когда вы пытаетесь получить доступ к переменной Я и распечатайте его значение в соответствии с заявлением 2, вы получите ShareError: я не определяется , как показано на выходе.
Рассмотрим еще один пример объявления переменной с использованием Const ключевое слово:
function placeOrder(status) { if (status) { const message = "Order placed successfully!"; console.log(message); // statement 1 } console.log(message); // statement 2}placeOrder(true);
Выход:
Order placed successfullyUncaught ReferenceError: message is not defined
Переменная сообщение объявлен с использованием Const ключевое слово внутри IF-блока. Это означает, что когда IF-Block заканчивается, переменная сообщение теряет свой объем и больше не доступен за пределы фигурных скобок IF-блока. Вот почему, когда вы пытаетесь получить доступ к переменной сообщение и распечатайте его значение в соответствии с заявлением 2, вы получите Справочник: сообщение не определено , как показано на выходе.
Рассмотрим пример, который мы обсуждали ранее, где вместо использования Пусть , вы используете вар Ключевое слово для объявления переменной Я :
function foo() { for (var i = 0; i < 3; i++) { console.log(i); // statement 1 } console.log(`All eyes here please: ${i}`); // statement 2}foo();
Выход:
012All eyes here please: 3
Переменная Я объявлен с использованием вар ключевое слово внутри блока питания. Потому что переменные объявлены с использованием var Ключевое слово функционирует, переменная Я не выходит из охвата, когда заканчивается блок для петли и доступен в любом месте внутри объема функции фюра . Таким образом, на выступление 2, когда вы пытаетесь получить доступ к переменной Я и распечатайте его значение, вы получаете правильный вывод как 3 (увеличенное значение переменной Я После выполнения оператора приращения на петли выполнено), как показано на выходе.
Редитарство
Как вы думаете, что будет выходом следующего кода?
let avengers = 'Infinity War';let avengers = 'Endgame';
console.log(avengers);
Выход:
Uncaught SyntaxError: Identifier 'avengers' has already been declared
В приведенном выше коде вы объявили переменную с именем Мстители используя Пусть ключевое слово И тогда вы объявили его снова на следующей строке. Таким образом, вторая строка бросает SyntaxError Как упоминалось на выходе.
Давайте теперь объявляем переменную, уже объявленную ранее в том же объеме, используя var ключевое слово.
var avengers = 'Infinity War';var avengers = 'Endgame';
console.log(avengers);
Выход:
Endgame
Как видно из вывода, вы можете Redeclare переменные, имеющие одно и то же имя в том же объеме, используя var ключевое слово. Значение, содержащееся в переменной, будет окончательным значением, которое вы его назначили.
Подъемник
Это важный момент, который забыт многие, и вы не найдете его во всех статьях. Чтобы понять, что означает этот момент, рассмотрим пример, указанный ниже:
console.log(x);let x = 10;
Выход:
Uncaught ReferenceError: x is not defined
Обратите внимание, что на первой строке в указанном выше коде вы пытаетесь получить доступ к переменной х , который объявлен и назначен значение на следующей строке. По сути, вы пытаетесь получить доступ к переменной, которая еще не была выделена памятью (объявлена). С момента переменной х объявлен с использованием Пусть ключевое слово и переменные, объявленные с использованием Пусть / Const Ключевые слова не поднимаются, это бросает ShareError: X не определен , как показано на выходе.
console.log(x);var x = 10;
Выход:
undefined
Все декларации перемещаются на вершину объема. Обратите внимание, что на первой строке вы пытаетесь получить доступ к переменной х , который объявлен и назначен значение на следующей строке. Теперь, поскольку переменная х объявлен с использованием var Ключевое слово и переменные объявлены с использованием var Ключевое слово поднимается в верхней части их объема в JavaScript, код преобразован в тот, который приведен ниже:
var x;console.log(x);x = 10;
Здесь переменная х объявляется в строке 1 и не назначается никакого значения. Все переменные в JavaScript инициализируются со значением по умолчанию неопределенный , если пользователю не назначается другой ценности. Таким образом, х присваивается значение undefined Что напечатано на второй строке (до X обновляется до 10).
Более крупный вопрос – что предпочитать?
ES6 (AKA ES2015) поддерживается практически всеми браузерами сегодня. Если вы можете следовать этому синтаксису, рекомендуется использовать позволять и Const Ключевые слова для объявления всех переменных в вашем коде.
Теперь, какой выбирать среди позволять и Const ? Название говорит все это.
Оригинал: “https://www.freecodecamp.org/news/let-me-be-a-const-ant-not-a-var-iable-1be52d153462/”