gpt4 book ai didi

javascript - 如何从闭包内部返回一个值到外部作用域?

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

我遇到了将一个值从一个函数返回到另一个函数的需要,当这个简单的任务不起作用时,我困惑地挠了挠头。然后我意识到我是在一个闭包函数(或匿名函数?)中操作,并且找不到关于如何将变量释放出此类函数范围的文档。

例如,这不起作用:

function aFunc()
{
var result;
object.event = function(){
result = true;
}
return result;
}

也不会从闭包内部返回。我需要两者都做吗?我尝试在尽可能大的范围内(所有函数之外)使用全局变量,但这也不起作用。我错过了什么?

我不确定我是否正确使用了术语闭包,我指的是匿名函数。

谢谢。

最佳答案

你需要调用闭包:

function aFunc() {
var result;
object.event = function() {
result = true;
};
object.event();
return result;
}

或者,如果它在其他地方运行,这是一个时间问题。你可以有类似 promise 的东西:

function aFunc() {
var promise = { hasRun: false, result: null };
object.event = function() {
result.hasRun = true;
result.result = true; // or something else...
};
return promise;
}

// check if it has run and get the result:

if (promise.hasRun) {
// access promise.result
}

但是,一个简单的回调就足够了。由于您提到了 XMLHttpRequest 对象,您应该能够将回调附加到它的 onreadystatechange 事件,或将回调传递给 aFunc:

function aFunc(callback) {
object.event = function() {
var result = true;
callback(result);
};
}

然后您的回调会在结果可用时被调用。

关于javascript - 如何从闭包内部返回一个值到外部作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144464/

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