javascript - 使用闭包存储和检索数据

标签 javascript jquery closures

我正在尝试使用闭包同时存储和检索变量。

我正在使用 JSONP 和回调函数

http://freegeoip.net/json/?callback=geoIPInfo

关闭

function geoIPInfo(newGeoData) {
    var geoInfo;
    if (newGeoData) {
        geoInfo = newGeoData;
    }
    var provideGeoData = function () {
        return geoInfo;
    };

    return provideGeoData();
}

我想首先存储数据,然后使用像这样的简单调用从闭包中检索最后保存的数据

geoIPInfo()

如果提供参数,它将设置新信息,否则将返回现有信息。

但在我的例子中,数据已成功设置,但当我尝试获取设置数据时,我得到的是 undefined

 $("#super_button").click(function (e) {
            alert(geoIPInfo());
            e.preventDefault();
        });

我对闭包的理解有什么问题? 请解释。

谢谢。

最佳答案

这会起作用。这里的想法是我们创建一个函数,该函数返回一个接受参数的函数,并将 geoInfo 存储在闭包中以保持其值。不知道这是否有意义,如果您需要更好的解释,我可以再试一次:)

var geoIPInfo  = function() {
    var geoInfo;
    var provideGeoData = function (newGeoData) {
        if (newGeoData) {
            geoInfo = newGeoData;
        }
        return geoInfo;
    };
    return provideGeoData;
}();

关于javascript - 使用闭包存储和检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40821512/

相关文章:

javascript - JavaScript 中的闭包

java - 是否有可序列化的标准闭包接口(interface)?

javascript - 使用 angularJS 重定向页面

javascript - 如何让 casperJS 等待 .change() 事件完成?

javascript - PHP 循环遍历带有按钮 ID 的表单

javascript - 使用 knockout 访问模型之外的其他 JavaScript 中的可观察量?

javascript - 如何通过 javascript Ajax POST 发送 html 表单的表单参数?

javascript - 带内容加载的 Iframe

javascript - 通过 Ajax (Wordpress) 加载内容后让 javascript 工作

Swift 闭包通过引用捕获数组