bar = "foo"
}
делает bar глобальной переменной?
Так нету префикса var, let, const
так же как и с функциями и другими объектами, обращается к глобальной переменной, можете посмотреть в браузере: console.log(window.bar);
Нет, именно сточки зрения интерпретатора как это работает. В случае с глобальной var создаётся глобальный контекст выполнения, в нём создаётся лексическая среда, в неё хоистится var = undefined, всё ок. В случае с let const лексическая среда привязана к функцуии или к блоку (ну или глобально). Всё ок. Я не могу понять, почему function foo() { bar = "foo" } Делает bar именно глобальной, хотя по всей логике должен относится к лексической среде foo?
Если я не ошибаюсь, так работало до появления let и const.
Ты пытаешься что-то присвоить переменной без её объявления через var, let, const Раньше это всплывало в поисках этой переменной до глобальной области видимости и там уже она создавалась В strict mode это контроллируется и просто вызовет ошибку
Обсуждают сегодня