Что такое var, let, const

var, let и const — это три разных способа объявления переменных в JavaScript. Несмотря на то, что они в чем-то похожи, между ними есть важные различия, запишите их для лучшего понимания. Я предпочитаю экспериментировать с javascript вместе с этим постом.

Область действия: переменные var имеют область действия функции, а переменные let и const имеют область действия блока. Это означает, что переменные var доступны во всей функции, в которой они объявлены, а переменные let и const доступны только внутри блока, в котором они объявлены (например, внутри цикла или оператора if).

Пример:

function DemoForScope() {
  var x = 10;
  if (true) {
    var y = 20;
    let z = 30;
  }
  console.log(x); // 10 ✅
  console.log(y); // 20 ✅
  console.log(z); // ReferenceError: z is not defined 🚫 
}

Поднятие: переменные var поднимаются наверх своей области, а переменные let и const не поднимаются. Это означает, что к переменным var можно получить доступ до их объявления, а к переменным let и const нельзя.

Пример:

console.log(a); // undefined 🚫
var a = 10;

console.log(b); // ReferenceError: b is not defined 🚫
let b= 20;

Переназначение: переменные var и let могут быть переназначены, а переменные const — нет.

Пример:

var superMan= 10;
superMan = 20;
console.log(superMan); // 20 ✅

let batMan= 30;
batMan = 40;
console.log(batMan); // 40 ✅

const hulk= 50;
hulk = 60; // TypeError: Assignment to constant variable 🚫
//hulk is a constant it can't be changed

Временная мертвая зона (TDZ): переменные let и const имеют TDZ до их объявления. Это означает, что вы не можете получить доступ или сослаться на переменную let или const до ее объявления, иначе вы получите ReferenceError.

Пример:

console.log(x); // undefined 🚫
var x = 10;

console.log(tom); // ReferenceError: Cannot access 'tom' before initialization 🚫
let tom= 20;

console.log(jerry); // ReferenceError: Cannot access 'jerry' before initialization 🚫
const jerry= 30;

рекомендуется использовать let и const вместо var, поскольку они обеспечивают лучшую область действия и позволяют избежать некоторых проблем, связанных с поднятием и переназначением.

const следует использовать, когда вы хотите объявить переменную, которую нельзя переназначить, а let следует использовать, когда вы хотите объявить переменную, которую можно переназначить.

Спасибо 🤗.