在匿名闭包函数中定义全局函数

时间:2019-08-07 22:25:01

标签: javascript function scope

有什么方法可以在闭包内定义全局函数吗?我想定义一个全局函数,以便可以通过onclick事件调用它。

(function(){

 var private = 'private msg';

 function myprivate() {
   alert(private)
 }

 function wanttobeglobal() {
   alert(global) 
 }

})();

有什么办法吗?

2 个答案:

答案 0 :(得分:0)

将功能分配给window

(function(){

 var private = 'private msg';

 function myprivate() {
   alert(private)
 }

 window.wanttobeglobal = function wanttobeglobal() {
   alert(global) 
 }

})();

答案 1 :(得分:0)

非常不好的做法,但是在初始闭合之外声明变量的唯一方法是隐式创建全局变量。

wanttobeglobal = function() {
  alert(global);
};

如果可以在闭包之外修改代码,更好的方法是使用var

var wanttobeglobal;

(function() {
  // ...
  wanttobeglobal = function() {
    alert(global);
  };
})();