Исправление
var test = 'global value';
(function() {
var test2 = 'local value';
console.log(test);
})();
Реальное решение состоит в том, чтобы исправить ваш код так, чтобы вы не следили за глобальными переменными, которые вас волнуют.
Eval Work вокруг
Вы всегда можете использовать глобальный eval, он самый надежный.
Пример
var test = 'global value';
function runEval(str) {
return eval(str);
}
(function() {
var test = 'local value';
console.log(runEval("test"));
})();
Если вам не нравится определять глобальный eval, вы можете использовать Function
, чтобы сделать это косвенно
Живой пример
var test = 'global value';
(function() {
var test = 'local value';
console.log(new Function ("return test;") () );
})();
Разные хаки
Следующие работы в нестрогом режиме
(function () {
var test = "shadowed";
console.log(this !== undefined && this.test);
})();
И этот хак работает в сломанных реализациях
(function() {
var test = 'local value';
try { delete test; } catch (e) { }
console.log(test);
})();