我已经看到很多关于JavaScript中全局和功能范围之间差异的帖子,这里有很多链接.我也看到了关于Python的确切问题.所以我想知道的是,当"更接近"的范围也有一个具有相同名称的变量时,如何访问全局变量?
var a = "global";
function b(){
var a = "local";
var magic = ...; // somehow put "global" in magic
console.log(magic); // should print "global"
}
Run Code Online (Sandbox Code Playgroud)
仅在浏览器中,我发现您可以使用它window.a来指定全局.服务器端有什么用吗?
Den*_*ret 12
如果它真的是全局的(即不只是在外部范围内),你可以这样做:
var magic = (function(name){return this[name]}).call(null, "a");
Run Code Online (Sandbox Code Playgroud)
输入功能代码
当控件进入函数对象F中包含的函数代码的执行上下文,调用者提供thisArg和调用者提供的argumentsList时,执行以下步骤:
如果函数代码是严格代码,请将ThisBinding设置为thisArg.否则,如果thisArg为null或未定义,则将ThisBinding设置为全局对象.
请注意,您无法在jsFiddle中对此进行测试,因为全局范围不是您定义a的位置.
示范:
var a = "global";
function b(){
var a = "local";
var magic = (function(name){return this[name]}).call(null, "a");
document.body.textContent = 'a: '+JSON.stringify(magic); // print "global"
}
b();Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7429 次 |
| 最近记录: |