【发布时间】:2016-09-08 01:36:47
【问题描述】:
在深入探讨这个问题之前,我想澄清一下,我的用例涉及修补反编译器以生成适当的等价物,因此这个问题有点尴尬。
我想隐藏一个外部变量,但也将其初始化为与外部相同的值。这是一个例子:
var a = 2;
(function(){
var a = a;
a += 3;
// I want `a` to be 5
})();
// I want `a` to be 2
我通过上面的示例意识到内部a 将是NaN (undefined + 3),但是我可以将执行阴影的变量初始化为它以某种方式阴影的同一个变量吗?将它作为参数传递不是一个选项,因为该函数将由用户编写,唯一一致的是内部范围的存在。我正在考虑更改内部变量 a 的名称,但编译器目前还不能轻松跟踪它,这会带来额外的麻烦。
【问题讨论】:
-
“外部变量”总是在全局范围内吗?如果是这样,事情就容易多了。
-
不,它通常在当前范围之外的范围内
-
好的,所以 Danny 的回答就是成功。尽管您所做的事情可能会让维护代码的任何人感到困惑。
-
引用操作
Passing it as an argument is not an option
标签: javascript shadowing