В чем различия между ‘var’, ‘const’, ‘let’?

До прихода обновления EcmaScript 6 (в 2015 году) для объявления переменных использовалось слово “var”. В ES6 были введены – “let” и “const”.

Давайте разберемся для начала в общих чертах этих ключевых слов:

  • Переменные объявленные этими ключевыми словами имеют, как глобальную, так и функциональную область видимости. Если переменная объявлена вне функции, то ее можно вызвать и внутри функции, но переменную созданную в функции, нельзя вызвать вне функции:
var test1 = 1;
function run() {
  var test2 = 2;
  console.log(test1); // 1
  console.log(test2); // 2
}
run();
console.log(test1); // 1
console.log(test2); // ReferenceError: test2 is not defined
let test1 = 1;
function run() {
  let test2 = 2;
  console.log(test1); // 1
  console.log(test2); // 2
}
run();
console.log(test1); // 1
console.log(test2); // ReferenceError: test2 is not defined

“const” будет вести себя так же.

А теперь разберем различия между ними:

VAR


  • Переменная объявленная через “var” объявляются сразу при запуске программы и только потом ей присваивается значения. Чтобы это проверить, мы можем вызвать переменную до ее объявления, ее значение будет “undefined”:
console.log(test); // undefined
var test = "Hello, World!";
console.log(test); // "Hello, World!" 
  • Переменная с одним именем может быть переобъявлена несколько раз:
var test = 1;
console.log(test); // 1
var test = 2;
console.log(test); // 2
  • Переменная может быть обновлена:
var test = 1;
console.log(test); // 1
test = 2;
console.log(test); // 2

LET


  • Переменная объявляемая словом “let” объявляется в том месте кода где она была прописана:
console.log(key); // ReferenceError: Cannot access 'key' before initialization
let key = "Hello";
console.log(key); // "Hello"
  • Переменную с таким же именем нельзя объявить повторно в блоке кода программы:
let key = "Hello";
console.log(key); // "Hello"
let key = "Buy";
console.log(key); // SyntaxError: Identifier 'key' has already been declared
  • При этом в другом блоке можно объявить переменную с таким же именем:
let key = "Hello";
console.log(key); // "Hello"
function run() {
  let key = "Buy";
  console.log(key); // "Buy"
}
run();
  • Переменная может быть обновлена:
let key = "Hello";
console.log(key); // "Hello"
key = "Buy";
console.log(key); // "Buy"

CONST


  • Ключевое слово “const” имеет все те же преимущества, что и “let”, но с одним исключением. Переменная объявленная через “const” не может быть изменена. При попытки изменения, нам выдаст ошибку:
const key = "Hello";
key = "Buy";
console.log(key); // TypeError: Assignment to constant variable.

Контакты

385000, Республика Адыгея,
город Майкоп

+7-928-669-69-44

+7-961-768-04-99

Напишите нам

Подробнее о нас

Подпишитесь

Мы готовы делиться нашими достижениями с Вами!