簡體   English   中英

如何在匿名函數中訪問變量?

[英]How access to variables within an anonymous function?

我在變量GLOBAL內有一個匿名函數。

var GLOBAL = function (){

  var func1 = function(){

    console.log("function 1 go!")

  }

  var func2 = function(){

    console.log("function 2 go!")

  }

  return {

    init: function(){

        func1();

    }

  }

}()

在我的init函數中返回func1 ,將其調用為GLOBAL.init();

我的問題是:如何直接調用函數,例如GLOBAL.func1()GLOBAL.func2()

您必須返回函數引用,

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,func2 }; 這與{ func1 : func1,func2 : func2 };非常相似{ func1 : func1,func2 : func2 }; 我只是使用了ES6中引入的速記。

你不能 它們是局部范圍的變量。 在功能之外無法訪問是重點。

如果希望它們可訪問,則需要使它們如此明確(就像您為分配給init的匿名函數所做的那樣)。

您應該在返回的對象中顯式添加這些功能。 在此代碼中,您仍然可以繼續執行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

如果可以幫助您,則可以采用模塊化方法:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM