为什么这个JavaScript函数失去封闭范围?

我在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的.apply().apply()方法来改变它的运行范围。但我认为cb将是就像path一样。

更新:在函数中包装callback使其工作。 但是我仍然想要解释一下这里发生的事情。

 var cb = function() { callback(); }; 

它按预期工作。 问题是错的,所有的评论都是对的。 有人需要学习如何编码。