nodejs函数声明

时间:2017-11-03 14:20:01

标签: javascript node.js

我在文件中声明了这样的函数:

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。

为什么会这样?难道它不应该被称为独立于呼叫的位置吗?

3 个答案:

答案 0 :(得分:4)

问题是您正在尝试从错误的范围访问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;

答案 1 :(得分:3)

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();

答案 2 :(得分:0)

如果在文件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();