Когда я вызываю функцию, для этого вызова создается локальная область видимости. Есть ли способ напрямую ссылаться на эту область как на объект? Точно так же, как окно является ссылкой на объект глобальной области видимости.
Пример:
function test(foo){
var bar=1
//Now, can I access the object containing foo, bar, arguments and anything
//else within the local scope like this:
magicIdentifier.bar
}
В качестве альтернативы, есть ли у кого-нибудь полный список того, что находится в локальной области помимо пользовательских переменных?
Предыстория: я пытаюсь перейти к полному переходу на глобальную область видимости из вызова функции, оператор with — это шутка, вызов работает немного лучше, но он по-прежнему ломается для всего, что объявлено в области функции, но не в глобальная область действия, поэтому я бы объявил эти несколько случаев в глобальной области видимости, но для этого мне нужно знать, что они из себя представляют. Функция execScript в IE делает полный сдвиг, но это решает проблему только для IE.
Примечание. Для всех, кто загружает JavaScript динамически, setTimeout(code,1)
— это простой эффективный способ достижения глобальной области видимости, но он не будет выполняться немедленно.
foo
внутри функции, почему бы не передать этот объект напрямую в качестве аргумента? - person Darin Dimitrov   schedule 08.04.2010eval()
илиnew Function()
. - person Brandon McConnell   schedule 03.06.2021