JavaScript:如何将数组作为函数参数处理?

时间:2016-06-10 14:51:33

标签: javascript node.js

我已经阅读了很多关于将数组作为函数参数传递给不同返回值的内容。但是如果我有三个js文件它就不起作用。

main.js

module.exports = function(){
      this.deliver = require('./file1.js'); 
      this.start = require('./file2.js');  
}

file1.js

module.exports = function(id){
  require('./main.js')();

  function deliver(id){
  console.log('Does deliver() work?:'+id);
    var arr = new Array(2);
    arr[0] = 'content 1';
    arr[1] = 'content 2';
    return arr;
  }
}

file2.js

require('./main.js')();

start.apply(null, deliver('yes'));

function start(x, y){
  console.log('x: '+x);
  console.log('y: '+y);
}

你有一个想法,为什么没有定义交付?

@Jose,谢谢。是的,这是整个代码。如果一切都在一个文件中,它是否有效。但不是三个档案......

@Quentin,谢谢。你知道如何让它与三个文件一起工作吗? - >我尝试将任务从file2外包到file1,因为我也需要它来执行其他任务。最后,我需要在file2中返回file1的结果才能使用它。在我的例子中,我省略了外包。

感谢您的提示,Qentin。我已经更新了上面的代码。 deliver(x)现在包含一个参数,我想回到file2.js。它已经到达file1但是没有回来。

我还在努力寻找解决方案。我已经了解了如何将数据从file2传递到file1(反之亦然)。

main.js

module.exports = function(){
      this.file1 = require('./file1.js'); 
      this.file2 = require('./file2.js');  
}

file1.js

require('./main.js')();

//file2.receive('yes', 'content 1');


module.exports = {

  deliver : function(id){
  console.log('Does deliver() work?:'+id);
    return file2.receive(id, 'content 1');
  }
}

file2.js

require('./main.js')();

file1.deliver('yes');


module.exports = {

  receive : function(x, y){
    console.log('x: '+x);
    console.log('y: '+y);
  }
}

我可以启动file2并将数据传递给file1,如果"返回file2.receive(id,' content 1');"消失了。我也可以从file1开始并将数据传递给file2,只要" file1.deliver(' yes');"消失了。为什么不能同时工作?

1 个答案:

答案 0 :(得分:3)

模块中的变量是本地范围的,在其他函数中声明的函数声明的作用域是这些函数。

this.file1file1.js分配了导出的函数。 deliver函数只能在该函数中访问。

此外,file2.js无法访问file1.js中的任何内容,因为

  • 他们都不需要其他
  • 其中任何一个都没有通过任何可以访问它们的东西(作为参数)传递给另一个

file2.js的内容无法访问deliver,因为它的范围完全不同。

您需要对代码进行重大修订才能使其可访问。我甚至不知道从哪里开始,因为你的代码是如此抽象,以至于无法分辨它想要做什么。