Xandr24
@Xandr24
учиться и еще раз учиться

Кто подскажет про вложенные области видимости в js?

Парни, начал изучать js что называется с основ!
Читаю про области видимости и замыкание, из книжке понял что движок ищет переменные по направлению от внутренней Об Вид к внешней, тобишь поиск идет наружу, но вот по быстрому хотел проверить данным кодом, и все оказалось не так как в книге.
function Ae(a){
	var c = a + b;
	alert(c);

	function find(b){
		var b = 5;
	}
}
Ae(2);

изначально идет ссылка на параметр a во внешней функции, там движок находит переменную b и по логике вещей код должен был выдать ошибку так как переменная b находится во вложенной области видимости а поиск идет не в сторону внутренней области а сторону глобальной(внешней), почему так?
  • Вопрос задан
  • 239 просмотров
Решения вопроса 1
ueruxon
@ueruxon
Только начал учится.
Ну, у меня он ошибку и вызвал. Что b is not defined. Так ведь и должно быть, разве нет?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Объясню, почему небыло ошибки.
JS поддерживает максимальную совместимость со старыми стандартами, если явно не указано другое
Согласно древнему es3 переменная b будет взята из глобального объекта (самая верхняя область видимости), без проверки на ее наличие
Более строгие проверки были добавлены в es5, но если бы их включили по умолчанию, то старый код мог сломаться. Поэтому был введен строгий режим, который можно включить добавив 'use strict'; в начале файла или функции
Ответ написан
Ваш ответ на вопрос

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

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