我想知道如何访问以下代码中的特定变量:
档案foo.js
function a(id, callback) {
//Do things
if (err) {
callback(err);
} else {
callback(null, result);
}
}
function b(x, callback) {
//Do things
if (err) {
callback(err);
} else {
callback(null, result);
}
}
文件问题.js
var id = 1;
var x = 2;
foo.a(id, function(err, result){
if (err) {
//Do stuff
} else {
foo.b(x, function(err, result){
if (err) {
//Do stuff
} else {
console.log("Function A: " + result); // I want to log result from foo.a
console.log("Function B: " + result);
}
});
}
});
如何从函数foo.a中访问函数foo.b中的var结果?
问题是,是否有某种方法可以在不查询名称的情况下引用变量。类似于this.result
或super.result
。
答案 0 :(得分:0)
问题是,是否有某种方法可以引用变量而不会追溯名称。类似于
this.result
或super.result
。
不,没有注意到从外部作用域(在您的情况下,result
的回调中的a
参数)中访问您通过重用标识符名称而被遮蔽的标识符错误范围(在您的情况下,result
的回调上的b
参数)。
相反,只需为参数指定不同的名称,因为b
回调会因result
回调收到的a
而结束:
var id = 1;
var x = 2;
foo.a(id, function(err, aresult){ // <=== `aresult` instead of `result`
if (err) {
//Do stuff
} else {
foo.b(x, function(err, bresult){ // <=== `bresult` instead of `result`
if (err) {
//Do stuff
} else {
console.log("Function A: " + aresult); // <=== Use them
console.log("Function B: " + bresult); // <===
}
});
}
});