在下面的代码中,我尝试将参数“test”传递给回调。好消息是回调确实被调用了;但是,正在打印字符串“I see undefined”而不是“I see test”。
var MyObject = function(){
}
MyObject.prototype.b = function(data){
console.log("I see " + data);
}
a = function(callback){
callback("test");
}
var it = new MyObject();
a(function(){it.b()});
我有预感它与闭包有关,因为如果我直接调用它.b(“test”),我会看到打印的字符串“I see test”。为什么函数没有正确接收参数?
最佳答案
您正在调用不带参数的 it.b()
,因此当您进入 b()
方法时没有参数就不足为奇了。如果您希望为 it.b()
显示参数,则必须在回调中声明它,以便随后可以将其传递给 it.b(arg)
。
a(function(arg){
it.b(arg)
});
或者,您可以传递回调中的所有参数:
a(function(){
it.b.apply(it, arguments)
});
或者,您可以使用.bind()
。
a(it.b.bind(it));
关于node.js - 未传递回调参数 (Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21325725/