我在node.js中运行它。为什么以下代码段失去了cb
var?
Client.prototype.post = function(path, data, callback) {
var self = this;
var cb = callback;
return function() {
console.log(path);
console.log(cb);
rest.post(self.baseUrl + path, data).on('complete', cb || this.callback);
}
};
对此函数的调用类似于client.post('/user', {}, function() {});
,并输出以下内容:
/user
undefined
我希望第二行是[Function]
返回的函数可能正在用js的.call()
或.apply()
方法执行,以改变它运行的范围。但是我认为cb
就像path
一样可以访问。
更新:在函数中包装回调可以使其正常工作。但我还是想解释一下这里发生了什么。
var cb = function() { callback(); };
答案 0 :(得分:2)
它按预期工作。问题是错误的所有评论都是对的。有人需要学习如何编码。