JavaScript

variables diff

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

Тело конструкций if, for, while и тд. для  let и const организуют блочную область видимости.

if (true) {
  let test = true; // используем let
}

console.log(test); // Error: test is not defined

Для «var» не существует блочной области видимости. Используют область видимости функции или глобальную.

if (true) {
  var test = true; // используем var вместо let
}

console.log(test); // true, переменная существует вне блока if

Так как var игнорирует блоки, мы получили глобальную переменную test.

function sayHi() {
  if (true) {
    var phrase = "Hello"; // определение переменной и присвоение значения переменной
  }

  console.log(phrase); // получим сообщение -> Hello
}

sayHi();
console.log(phrase); // Error

Если блок кода находится внутри функции, то var становится локальной переменной в этой функции:

У var область видимости function или global

function sayHi() {
  console.log(phrase);	 // undefined. 
			 // при запуске функции у нас сначала обьявится переменная 
			 // которая созданная через var
 			 // свяжим переменную с ячейкой памяти

   var phrase = 'Hello'; // выполняем присвоение значения

   console.log(phrase);	 // выведем Hello
}
sayHi();

«var» обрабатываются в начале запуска функции

Объявления переменных var обрабатываются в начале выполнения функции (или запуска скрипта, если переменная является глобальной).

«let» не можем вызвать до определения переменной, будет ошибка!

Существует 2 основных отличия var от let/const:

  1. Переменные var не имеют блочной области видимости, они ограничены, как минимум, телом функции.
  2. Объявления (инициализация) переменных var производится в начале исполнения функции (или скрипта для глобальных переменных).

variables-diff

By Oleg Rovenskyi

variables-diff

var, let, const

  • 201