gpt4 book ai didi

javascript - 为什么这个 javascript 函数失去了闭包作用域?

转载 作者:行者123 更新时间:2023-11-29 22:27:39 24 4
gpt4 key购买 nike

我在 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(); };

最佳答案

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

关于javascript - 为什么这个 javascript 函数失去了闭包作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8581141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com