Почему код работает без ошибок, хотя переменной а присвоено значение без ключевого слова let

Рейтинг: 0Ответов: 2Опубликовано: 10.02.2023

Дан код:

a = 1;
console.log(a); 
{
  var a = 10;
}
console.log(a);

И вопрос к нему:

Почему код работает без ошибок, хотя переменной а присвоено значение без ключевого слова let

Он работает потому, что var не имеет ограничений в области видимости и задает переменную a в начале кода вместо let? Или потому, что не использован режим use strict, а до него была возможность присваивания переменной значения без ее объявления?

Спасибо вам за ответ!

Ответы

▲ 0Принят

Потому что происходит хойстинг var. Переменная, объявленная через var всплывает на верх кода. Поэтому интерпретатор js думает, что a уже есть и выполняется первый console.log, а потом выполняется второй. Поэтому var устарел и ему на смену пришли let и const, чтобы избегать всплытий. Использование var усложняет чтение и понимание кода, а также сложность отыскивания багов, если код на несколько десятков или сотен строчек. Лови этот var, где он там объявлен и почему он всплыл :)

▲ 1

Для var не существует блочной области видимости

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

Более подробно можно посмотреть в учебнике https://learn.javascript.ru/var