我正在尝试使用闭包同时存储和检索变量。
我正在使用 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/