2015-10-02 38 views
1

访问父函数中定义的变量而不创建处理程序是否可行?在javascript中访问父元素而不创建处理程序

所以基本上我需要的是像下面的东西。

var g=100; 

(function f() 
{ 

var g=200; 

(function() 
    { 
    var g=300; 

    console.log(g);   //300 
    console.log(window.g);  //100 
    console.log(??) // how should i get value of g as 200 here ?? 

    })(); 

}(); 

请注意在这里,我不想在这里创建处理程序。如果我只有一个函数,并且我想访问函数内部的父变量(当前函数中存在相同的变量),那么我可以使用window [变量名]

回答

4

您必须使用不同的变量名,否则变量来自父范围将被内部范围中的范围所掩盖。

覆盖作用域之间的变量名是不好的做法应该避免。

1

这被称为数据隐藏。如果没有处理程序的帮助,则无法访问外部块数据。

1

我知道已经有一个选定的答案,但我会放入我的2分钱,以防它对您有用。

也许这样的事情是你想要什么:

new (function() { 
    this.msg = "hello 1"; 
    console.log(this.msg); 

    new (function (parent) { 
     this.msg = "hello 2"; 
     console.log(this.msg); // hello 2 
     console.log(parent.msg); // hello 1 
    })(this) 
})() 

可以保持与new关键字生成内部范围,实现范围在那里你可以保持访问父范围的这种树状结构(这是也使用new关键字创建。

+0

是的,这也将工作提供的父函数作为参数传递。谢谢Shafeen。 – Parashuram

相关问题