loc*_*ope 6 javascript closures scope
闭包中的局部函数声明一个具有相同名称的变量,该变量存在于闭包中.那么,我们怎么能从本地函数访问closure的变量呢?
function closure()
{
var xVar;
function func1()
{
var xVar;
// how to distinguish local and closure scopes.
return xVar;
}
return function () { return func1(); };
}
Run Code Online (Sandbox Code Playgroud)
创建私有对象并将私有变量作为此对象的属性可能会有所帮助.但我想知道是否有更好,更整洁的解决方案.范围链可以帮助吗?
我已编辑完全关闭.无论如何,闭包在这里并没有太多关注,它可以考虑内部函数,但是,可能有某种方式闭包的解决方案.
谢谢
您无法在 JS 中显式访问作用域链。你的问题是变量阴影的古老问题,但它更令人抓狂,因为在 JS 中,作用域链实际上在运行时就存在,只是你无法访问它。
如果您使用讨厌的with运算符,您可以通过重新调整当前作用域来玩一些技巧,但是(以及 的arguments调用者/被调用者的东西)实际上只是让您可以访问对象和函数及其属性。没有办法说“从这里告诉我 xVar 在 n-1 运行时范围中的含义”。