Я понимаю, как это работает (несоответствия между локальными и глобальными функциями), но я не совсем понимаю, как скрывать глобальные переменные в функциях, тогда как «локальная» переменная еще не определена или не инициализирована.Javascript - Почему глобальные переменные скрыты во всей функции (тела)?
var scope = "global";
function checkscope() {
console.log(scope);
}
//this returns >> undefined
Я читаю "JavaScript: The Definitive Guide (шестое издание)" и я говорю о главе 3.10 здесь. (стр. 54, если быть точным).
2 страницы позже, на странице 56 книги говорит:
«В не вложенной функции, сфера цепь состоит из двух объектов. -Первых, это объект, который определяет параметры функции и локальные переменные, а второй является глобальным объектом.»
не то, что будет означать, что глобальные переменные,„свойства“глобального объекта находятся в целая цепочка не-вложенной функции? Разве это не противоречит сказанному ранее 2 страницам?
Я не лучший в вербализации себя, поэтому, надеюсь, вы, ребята, понимаете, кроме того, английский не является моим родным языком, поэтому я извиняюсь, если это просто непонимание смысла текста с моей стороны.
я не понимаю. В вашем примере кода 'scope' не будет' undefined'. Способность внутренней области переменной иметь возможность ссылаться на переменные ее внешней области (областей) - это то, как работает лексическое обследование. – 2013-05-05 02:44:45
Ваш пример печатает «глобальный». – zneak
Стр. 54 of Javascript: The Definitive Guide имеет тот же самый код (с добавленными двумя строками, которые объявляют локальное значение, а затем снова регистрируют его). Он также буквально говорит: «Вы можете подумать, что первая строка функции будет печатать« global », потому что оператор var , объявляющий локальную переменную, еще не выполнен». и за строкой «console.log (scope); у него есть комментарий // Печать« undefined », а не« global » –