如何访问匿名函数中的变量?

时间:2016-04-14 14:42:29

标签: javascript

我在变量""中有一个匿名函数。

GLOBAL

在我的init函数中返回var GLOBAL = function (){ var func1 = function(){ console.log("function 1 go!") } var func2 = function(){ console.log("function 2 go!") } return { init: function(){ func1(); } } }() ,调用它func1

我的问题是:如何直接调用函数,例如GLOBAL.init();GLOBAL.func1()

4 个答案:

答案 0 :(得分:3)

您必须返回函数引用

var GLOBAL = function (){
  var func1 = function(){
    console.log("function 1 go!");
  }
  var func2 = function(){
    console.log("function 2 go!")
  }
  return { func1,func2 };
}();

现在您可以像GLOBAL.func1()GLOBAL.func2()一样访问它。并且不要混淆语法{ func1,func2 };。这与{ func1 : func1,func2 : func2 };非常相似,我只使用了ES6中引入的速记。

答案 1 :(得分:2)

你做不到。它们是本地范围的变量。在功能之外无法访问是很重要的一部分。

如果您希望它们可以访问,那么您需要明确地创建它们(就像您为分配给init的匿名函数所做的那样)。

答案 2 :(得分:1)

您应该在返回的对象中显式添加这些函数。在此代码中,您仍然可以继续执行init()作为对象初始化。



var GLOBAL = function (){
  
  var func1 = function(){
    console.log("function 1 go!")
  };

  var func2 = function(){
    console.log("function 2 go!")
  }

  return {
    init: function(){
        this.func1();
    }, 
    func1, 
    func2
  }

}();

GLOBAL.func1();
GLOBAL.func2();




我希望有帮助:D

答案 3 :(得分:0)

如果可以提供帮助,您可以采用模块化方法:

var GLOBAL = {
    func1: function(){
           console.log("function 1 go!")
    },
    func2: function(){
           console.log("function 2 go!")
    }
}

GLOBAL.func1();
GLOBAL.func2();