Давайте узнаем способ объявления переменных JavaScript.
Я начал изучать JavaScript 3 месяца назад. У меня как новичка много вопросов. Один из них: почему я должен использовать
Let
илиConst
вместоvar
. Я смотрю много руководств по этому поводу. Когда я смотрел все эти учебники, я решил использовать Var. Поскольку первый метод, который я узнал об объявлении переменной, - это var. И им легко пользоваться. Но позже, когда я начинаю работать над проектом, я сталкиваюсь с множеством ошибок и проблем. позвольте мне объяснить, какой из них мы должны использовать.
Вар
До Ес6 var
декларации правили. Есть проблемы с var
. Вот почему возникла необходимость в новых способах объявления переменных. Давайте разберемся var
больше, прежде чем обсуждать эти вопросы.
Сфера применения var
В ПОРЯДКЕ! Что такое размах? Что это значит? область действия означает, где эти переменные доступны для использования. var
объявления имеют глобальную область видимости или функцию / локальную область действия. Когда переменная var
объявляется вне функции, это называется глобальной областью видимости. Это означает, что любая переменная, объявленная с var
вне функционального блока, доступна для использования во всем окне.
var
- это область действия, когда переменная объявлена внутри функции. Это означает, что переменная доступна и к ней можно получить доступ только внутри этой функции.
Пример :
// This is global scope var doSomething = "Done"; // This is function scope function sayHi (){ var name = "Shakib" }
doSomething
- глобальная переменная области видимости. Мы можем получить доступ к этой переменной где угодно. Но sayHi
- это область действия функции. мы не можем получить к нему доступ вне функции. если мы сделаем это:
// This is global scope
var doSomething = "Done";
// This is function scope
function sayHi (){
var name = "Shakib";
}
console.log(name); // error: name is not defined
мы получим ошибку. Потому что name
недоступен вне функции sayHi
.
Повторно объявить и обновить переменную var
мы можем повторно объявить и обновить в той же области и не получим ошибки.
var doSomething = "Done"; doSomething = "Not Done";
когда мы хотим получить доступ к переменной var
перед ее объявлением, мы получим undefined
. Почему мы получаем undefined
вместо ошибки? Потому что, когда код выполняет JavaScript, все переменные и функции перемещаются наверх. Вот почему мы получаем undefined
. Движение наверх называется хостингом.
console.log(name); var name = "Shakib";
когда мы выполняем этот код. JavaScript перемещает переменную вверх перед выполнением. Нравится
var name; console.log(name); name = "Shakib";
Проблемы с var
Для новичка var - очень полезная функция. Но, возможно, нам придется объявить одноименные переменные при работе над проектом. И это вызовет у нас некоторую ошибку. Посмотрим код.
var doSomething = "Not Done"; money = 5; if (money > 2){ var doSomething = "Done"; } console.log(doSomething);
Итак, money > 2
return true, doSomething
переопределено на Done
. Это не проблема, если вы сознательно хотите, чтобы doSomething
было переопределено. Но это становится проблемой, когда вы не знаете, что переменная doSomething
уже была определена ранее. много ошибок в вашем коде. Вот почему необходимы let
и const
.
Позволять
let - один из методов объявления переменной в Es6. И это решает проблемы с var
переменной, которые мы только что рассмотрели.
пусть это блочная область видимости
что такое блочная область видимости? Все, что находится внутри фигурных скобок {}
, является блоком.
переменная, объявленная в блоке с let
, доступна только для использования внутри этого блока. Позвольте мне объяснить это на примере
let money = 5;
if (money > 2){
var doSomething = "Done";
}
console.log(doSomething); // doSomething is not defined.
когда мы console.log
doSomething
мы получим ошибку. Потому что мы использовали doSomething
вне его области.
пусть может быть обновлено
В отличие от переменной var
, мы не можем повторно объявить переменную let
. Но пусть может обновляться.
let point = 1; point = 5; //we updated the let vaiable.
это вернет ошибку:
let point = 1; let point = 5;
Однако, если одна и та же переменная определена в разных областях, ошибки не возникнет:
let doSomething = "Not Done"; money = 5; if (money > 2){ let doSomething = "Done"; console.log(doSomething); // return Done. } console.log(doSomething); // return Not Done.
Так же, как var
, let
объявления поднимаются наверх. В отличие от var
, который инициализируется как undefined
, ключевое слово let
не инициализируется. Поэтому, если вы попытаетесь использовать переменную let
перед объявлением, вы получите Reference Error
.
Const
Другой метод объявления переменной в Es6 - const. Переменные, объявленные с const
, поддерживают постоянные значения. const
имеют некоторое сходство с let
декларациями.
const имеет блочную область видимости
Как и let
объявления, const
объявления доступны только в том блоке, в котором они были объявлены.
const не может быть обновлен или повторно объявлен
Мы не можем обновить или повторно объявить константную переменную. Это означает, что переменная, объявленная с const
, остается неизменной в пределах своей области. Если мы объявим переменную с const
, мы не сможем этого сделать:
const UserName = "Elon Musk" UserName = "Bill Gates" //error message : invalid assignment to const 'userName'.
ни это:
const UserName = "Elon Musk" const UserName = "Bill Gates" //error message :'
UserName' has already been declared.
Когда дело доходит до объектов, объявленных с помощью const
, все обстоит иначе. Мы не можем обновить const
объект, но мы можем обновить свойства объекта. Если мы объявим объект const
:
const userInfo = { name : "Elon Musk", number : 00000000 }
мы не можем этого сделать:
const userInfo = {
name : "Bill Gates",
number : 1111111
}
//// error message: Assignment to constant variable.
мы можем сделать это :
userInfo.name = "Jeff Bezos";
мы просто обновляем значение userInfo.name
. Без ошибок.
Как и let
, объявления const
поднимаются наверх, но не инициализируются.
Итак, мы узнали, что такое var
let
и const
. Я в основном использую const
. Если есть вероятность, что переменная может быть обновлена в будущем, я использую let
. Вам также следует использовать let
и const
, а не var
.
Спасибо, что прочитали это.