FINoM, нормальными средствами — никак. Потребуется либо разбирать код скриптом, чтобы достать объявления переменных, либо писать что-то вроде этого:
Function.prototype.scope = function () {
var script = this.toString().replace(/function ?.*\([^)]*\)(?:\n|\s|\t)\{/, "").replace(/\}(?:\n|\t|\s)*$/, "").replace(/var +([а-яa-z0-9]+)/gi, "scope.$1");
var scope = {};
scope.scope = {};
with (scope)
eval(script);
return scope.scope;
};
var x = function () {
var p = 123;
};
alert(x.scope().p);
Давно писал. Можно заточить под свои нужды.