在内部Javascript回调函数中访问父函数参数的正确方法
问题描述:
请参阅以下代码片段。在内部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直接执行此操作的正确方法,并且如果同时处理多个函数调用会覆盖它,还是有办法将信息附加到回调函数中,以便将它绑定到它?
答
从@ jfriend00:
您可以直接访问 'passedData' 直接。它位于母公司范围 ,您可以在回调中完全访问它。每个函数 调用创建一个新的范围,从而创建一个新的数据集,从而 多个函数调用不要搞砸了
参见:MDN Closures
[注:标记社区维基,因为这主要来自他人的评论等,对此我没有要求积分。随意编辑和改进]
这将有助于:https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Closures – techfoobar 2014-11-08 06:41:03
您可以直接访问'passedData'。这是在回调中完全可以访问的父范围内。每个函数调用都会创建一个新的作用域,从而创建一组新的数据,因此多个函数调用不会混淆。 – jfriend00 2014-11-08 06:51:01
谢谢,这是有道理的 – 2014-11-08 07:51:30