gpt4 book ai didi

javascript - 将通用 js 代码移动到函数是否会因依赖闭包而受阻?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:03 25 4
gpt4 key购买 nike

这可能是个愚蠢的问题,但由于所有“Closure 101”链接,我似乎无法利用谷歌...

总而言之,给定依赖于闭包上下文的重复代码,有没有一种方法可以将代码去重到函数调用中,同时仍然让新函数仅依赖于闭包而不是通过参数传递它需要的一切?

粗略的代码示例可能如下所示:

function doWork(){
// initialize variables
// manipulate variables
// ...

$.ajax({
//...
success: function(data){
// DUPLICATE CODE INSTANCE 1 HERE
// RELIES ON VARIABLES IN THE CLOSURE
}
});

// More code

$.ajax({
//...
success: function(data){
// DUPLICATE CODE INSTANCE 2 HERE
// RELIES ON VARIABLES IN THE CLOSURE
}
});

}

据我所知,如果我将成功 block 中的逻辑去重到

function onSuccess(...){
// ...
}

然后 onSuccess 不再是闭包的一部分,因此需要将所有闭包变量作为参数传递给当前逻辑正在使用闭包访问的地方。

关于闭包的工作原理我错了吗?有没有办法将闭包“传递”给 onSuccess 函数而不是传递单个变量?

最佳答案

你对关闭行为没有错。您可以做的是在 doWork 中声明 onSuccess 函数。

function doWork(...) {
function onSuccess(...) {
// ...
}

$.ajax({
//...
success: onSuccess
});

$.ajax({
//...
success: onSuccess
});
}

关于javascript - 将通用 js 代码移动到函数是否会因依赖闭包而受阻?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16289931/

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