javascript - 如何检索阴影全局变量的值?

标签 javascript variables

例子:

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);
})();

真正的解决方案是修复你的代码,这样你就不会隐藏你关心的全局变量。

评估工作

您始终可以使用全局评估,它是最可靠的。

Example

var test = 'global value';

function runEval(str) {
  return eval(str);
}

(function() {
    var test = 'local value';

    console.log(runEval("test"));
})();

如果您不喜欢定义一个全局 eval,您可以使用 Function 间接地完成它

Live Example

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/

相关文章:

JavaScript 日期计算 显示/隐藏 Div 日期或逻辑有问题吗?

php - 打印几个不同的页面 PHP

javascript - 使用 v-if 隐藏和显示元素

javascript - 确定哪个元素具有焦点

php - 从复选框中获取错误的变量

variables - 接受用户对变量的输入

php - 使用从 URL 获取变量来执行 MYSQL 查询

c# - 如何将变量从一个脚本传递到另一个 C# Unity 2D?

javascript - 将缩进应用到文本区域段落的每个第一行

javascript - 根据计数结果创建动态变量名