Что такое 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
следует использовать, когда вы хотите объявить переменную, которую можно переназначить.
Спасибо 🤗.