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

Var

Var был единственным способом объявить переменную в JavaScript до ES6 (ECMAScript 6). Когда вы объявляете переменную с помощью var, ее область действия ограничивается ближайшим функциональным блоком, а не только ближайшим блоком, таким как let и const. Иногда это может привести к неожиданному поведению, если вы не знаете, как это работает. Например:

function myFunction() {
  var x = 10;
  if (true) {
    var x = 20;  // та же самая переменная
    console.log(x);  // 20
  }
  console.log(x);  // 20
}

В приведенном выше примере мы объявили переменную x внутри функции myFunction(). Внутри блока if мы объявили другую переменную x с тем же именем. Но, поскольку мы использовали var для объявления переменных, на самом деле это одна и та же переменная. Итак, когда мы регистрируем x внутри блока if, получаем 20. И, когда регистрируем x вне блока if, также получаем 20.

Область видимости переменной определяет, где к ней можно получить доступ в программе. Переменные, объявленные внутри блока кода, доступны только внутри этого блока, в то время как к переменным, объявленным вне блока, можно получить доступ в любом месте программы.

Let

Let был введен в ES6 как новый способ объявления переменных. Когда вы объявляете переменную с помощью let, ее область действия ограничивается ближайшим блоком. Это означает, что если вы объявите переменную внутри блока, например, оператор if или цикл, она будет доступна только внутри этого блока. Например:

function myFunction() {
  let x = 10;
  if (true) {
    let x = 20;  // это уже другая переменная
    console.log(x);  // 20
  }
  console.log(x);  // 10
}

В приведенном выше примере мы объявили переменную x внутри функции myFunction(), используя let. Внутри блока if мы объявили другую переменную x с тем же именем. Но, поскольку мы использовали let для объявления переменных, на самом деле это две разные переменные. Итак, когда мы регистрируем x внутри блока if, получаем 20. И, когда регистрируем x вне блока if, мы получаем 10.

Const

Const также был введен в ES6 как новый способ объявления переменных. Когда вы объявляете переменную с помощью const, она также ограничивается ближайшим блоком. Разница с let в том, что вы не можете переназначить значение переменной const. Например:

const name = "John";
name = "Bob"; // Вызовет TypeError: Присвоение константе новое значение 

console.log(name);

В этом примере мы объявляем name значение «John». Затем мы пытаемся переназначить новое значение «Bob» переменной name. Однако, поскольку name объявлено как переменная const, мы получаем ошибку TypeError, указывающую, что мы не можем переназначить новое значение постоянной переменной.

Этот пример демонстрирует, как const можно использовать для обеспечения того, чтобы значение переменной не могло быть изменено на протяжении всей программы. Как только переменная const объявлена и инициализирована, ее значение не может быть переназначено или изменено.

Почему const называют переменной

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

Термин «переменная» происходит от того факта, что значение, хранящееся в переменной, может изменяться с течением времени. Хотя значение переменной const не может быть переназначено, ее все равно можно использовать как любую другую переменную в программе, например, передавать ее в качестве аргумента функции или использовать в условном операторе.

Таким образом, даже несмотря на то, что значение переменной const не может быть изменено, оно все равно называется переменной в JavaScript, потому что это способ хранить значение в программе и ссылаться на него.