为什么这个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(); };
它按预期工作。 问题是错的,所有的评论都是对的。 有人需要学习如何编码。