簡體   English   中英

nodejs函數聲明

[英]nodejs function declaration

我在文件中聲明了一個像這樣的函數:

File1:
    module.exports = {
       function1: function(callback){
          //do some work
       },
    }

在另一個文件中,如果我導入File1並調用file1.function1,則該函數運行並得到結果。

雖然,如果我在File1中並聲明另一個函數:

module.exports = {
    function1: function(callback){
          //do some work
    },
    function2: function(callback){
        var result = function1...
    }
}

在這種情況下,我沒有定義function1。

為什么會這樣呢? 是否應該以某種方式與調用的位置無關地調用它?

問題是您試圖從錯誤的范圍訪問function1。 在您的范圍內沒有定義的“ function1”變量。 您只有module.exports.function1

const exportObject = {
    function1: function(callback){
          //do some work
    },
    function2: function(callback){
        var result = exportObject.function1... // or this.function1
    }
}

module.exports = exportObject;

應該管用

更新:更多示例:

function1() {
   // this will be executed by example2
}

var example3 = {
   function1: function () {
      // this will be executed by example3
   }
}
const exportObject = {
    function1: function(callback){
        // This will be executed by example1
    },
    function2: function(callback){
        // example1
        var result = exportObject.function1() // or this.function1()
        // example2
        var result = function1()
        // example3
        var result = example3.function1()
    }
}

module.exports = exportObject;

function1不是變量。

它是您分配給module.exports的對象的屬性。

比較一下:

 var foo = { bar: 1 } console.log(bar); 

barfoo的屬性,而不是本身的變量。

您必須這樣對待它。

 var foo = { bar: 1 } console.log(foo.bar); 

function1也是如此。

您需要將其作為對象屬性進行訪問:

var result = module.exports.function1();

如果在文件1中創建功能module.exports.function1 ,則在文件1中訪問它的方式是說module.exports.function1 有點長。 或者,您可以在文件1中像這樣創建它:

 var function1 = function() {...};
 module.exports.function1 = function1;

 function1();

您可以繼續使用文件2中的function1

 var file1 = require('./file1');
 file1.function1();

暫無
暫無

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

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