Задать вопрос
Nikulio
@Nikulio
NaN !== NaN

Что значит «JS does not have block scope» если имеет?

Постоянно терялся в этом вопросе
вот цитата:

Most languages with C syntax have block scope. All variables defined in a block (a list of statements wrapped with curly braces) are not visible from outside of the block. The variables defined in a block can be released when execution of the block is finished. This is a good thing.
Unfortunately, JavaScript does not have block scope even though its block syntax suggests that it does. This confusion can be a source of errors.


И так, функция:

var fizz() {
var a = 10
}
console.log(a) => undefined


Разве это не то самое, что описывается в цитате?
  • Вопрос задан
  • 178 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Разве это не то самое, что описывается в цитате?
Нет, это область функции, а не блока. В цитате речь об этом:
if (true) {
  var x = 42;
}
console.log(x) // 42
Ответ написан
в цитате говорится о том что к сожалению javascript не поддерживает область видимости именно блоков, под блоками понимается код заключенный в фигурные скобки, есть только область видимости функций, то есть всякие if for и прочие сущности с телом не создают области видимости в них переменные глобальные, область видимости создает только функция.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы