2014-11-08 89 views
0

请参阅以下代码片段。在内部Javascript回调函数中访问父函数参数的正确方法

var exec = require('child_process').exec; 

var extraInfo = {'test':1,'passing':'test'}; 

runWithData(extraInfo); 

function runWithData(passedData) 
{ 
    exec('/Users/test/Desktop/testcommand', function callback(error,stdout,stderr) 
    { 
     if (error) 
     { 
      console.log("ERROR",stderr); 
     } 
     else 
     { 
      console.log(stdout); 
     } 
    }); 
} 

在exec的回调中,我希望能够访问passedData。是否正在访问passedData直接执行此操作的正确方法,并且如果同时处理多个函数调用会覆盖它,还是有办法将信息附加到回调函数中,以便将它绑定到它?

+0

这将有助于:https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Closures – techfoobar 2014-11-08 06:41:03

+1

您可以直接访问'passedData'。这是在回调中完全可以访问的父范围内。每个函数调用都会创建一个新的作用域,从而创建一组新的数据,因此多个函数调用不会混淆。 – jfriend00 2014-11-08 06:51:01

+0

谢谢,这是有道理的 – 2014-11-08 07:51:30

回答

1

从@ jfriend00:

您可以直接访问 'passedData' 直接。它位于母公司范围 ,您可以在回调中完全访问它。每个函数 调用创建一个新的范围,从而创建一个新的数据集,从而 多个函数调用不要搞砸了

参见:MDN Closures

[注:标记社区维基,因为这主要来自他人的评论等,对此我没有要求积分。随意编辑和改进]