例子:
var test = 'global value';
(function() {
var test = 'local value';
// how to get the 'global value' string
})();
鉴于主机环境未知的情况,这意味着我们不能假设可以通过 window
名称访问全局对象。此外,该函数不允许接收任何参数!
最佳答案
修复
var test = 'global value';
(function() {
var test2 = 'local value';
console.log(test);
})();
真正的解决方案是修复你的代码,这样你就不会隐藏你关心的全局变量。
评估工作
您始终可以使用全局评估,它是最可靠的。
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);
})();
而且这个 hack 在损坏的实现中有效
(function() {
var test = 'local value';
try { delete test; } catch (e) { }
console.log(test);
})();
关于javascript - 如何检索阴影全局变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8250858/