variables js

by evgkch

JavaScript

// Инициализация
var a = 'a created';
const b = 'b created';
let c = 'c created';

// Переопределение
a = 'a overloaded';
// b = 'b overloaded'; // эта константа, переопределение выдаст ошибку с ругательствами
c = 'c overloaded';

console.log(a);
console.log(b);
console.log(c);
// a overloaded
// b created
// c overloaded

// Открываем новый блок
{
	var a = 'new a created';
  const b = 'new b created';
  let c = 'new c created';
  // Смотрим на значения внутри блока
  console.log(a);
  console.log(b);
  console.log(c);
  // new a created
  // new b created
  // new c created
}

// Снаружи поменялось значение переменной 'a',
// созданной через var, потому что ее область видимости в пределах
// модуля глобальна. Переменные, созданные через const и let
// видны только в пределах блока.
console.log(a);
console.log(b);
console.log(c);
// new a created
// b created
// c overloaded

// Переменные let и const не могут "подниматься вверх" внутри блока.
// Тем не менее, они могут "опускаться вниз. Все как в жизни
{
  const b = 'double new b created';
  let c = 'double new c created';
  // Блок внутри блока - это как сон во сне
  {
    console.log(b);
    console.log(c);
    // new b created
    // new c created
  }
}