4

我有这个代码

((function(){
var a=2;
var b=3;
var c=b+a;
alert(c);//alert 5
})());
alert(c); //no alert

我的问题是我可以通过哪些方式将 c 导出到全局范围?如果你能给出所有的方法。谢谢!

4

4 回答 4

4
var c = ((function(){
    var a=2;
    var b=3;
    var c=b+a;
    alert(c);//alert 5
    return c;
})());
alert(c);

有很多方法可以做到这一点。您也可以隐式或显式地对全局进行属性分配:

window.c = b+a;
this.c = b+a;
c = b+a;
于 2012-11-08T07:13:52.747 回答
1

这很简单!JavaScript 中的所有全局变量实际上都是“窗口”对象的子属性,因此在全局范围内声明一个变量会使该变量成为窗口对象的属性。从您的匿名函数中,您只需执行以下操作即可将“c”或其他变量放入全局范围...

window.c=b+a;
alert(c); // Same!

享受 :)

于 2012-11-08T07:18:47.160 回答
0
var c=0;
((function(){
    var a=2;
    var b=3;
    c=b+a;
    alert(c);//alert 5
})());

alert(c); //no alert
于 2012-11-08T07:17:35.773 回答
0

(function (window) {
    // this is local
    var c = 'local';
    
  // export to the global scope
    window.c = c || '';
})(window); // Pass in a reference to the global window object

console.log(c) // => 'local'

您还可以传入一些其他对象,并且不仅限于一个。是一个很好的解释它是如何工作的

于 2016-11-07T07:34:06.303 回答