gpt4 book ai didi

javascript - javascript 中的全局变量应该始终避免吗?

转载 作者:行者123 更新时间:2023-12-01 01:08:05 25 4
gpt4 key购买 nike

我已经看到,谷歌放置了 api 文档,建议在函数之外使用全局变量,例如:

var placeSearch, pauto, geocoder;

我想在函数外部使用从 $.get 返回的 data
我还可以使用由回调函数内的 data 提供的全局变量吗?

var glo_var;
function callback(data){
glo_var = data;
}

function codeAddress(address) {
geocoder.geocode({ 'address': address},
function(response, status) {
if (status == 'OK')
{
var senddata = $.get('/myurl',{params}, function (data){ callback(data) });
} else {
}
});
}

任何其他方式,我都可以利用从 $.get 返回的数据。我不明白闭包。

编辑 - 为什么这是重复的,我问在哪里存储返回的数据,我已经知道如何获取它?我不确定全局变量的使用,但由于 google api 使用它,所以我在这里询问了它。

最佳答案

所以尽可能避免使用全局变量的原因如前面的答案所述。它是关于在某些全局值被覆盖时轻松覆盖问题和故障排除。根据我自己的经验,我通常创建一个实用程序来处理共享值。思路如下

//global.js
(function(){
const context = {};
function setGlobalValue(key, value) {
context[key] = value;
}
function getGlobalValue(key) {
return context[key];
}
window.setGlobalValue = setGlobalValue;
window.getGlobalValue = getGlobalValue;
}());
// app.js
function codeAddress(address) {
geocoder.geocode({ 'address': address},
function(response, status) {
if (status == 'OK')
{
var senddata = $.get('/myurl',{params}, function (data){ setGlobalValue('codeAddress', data) });
} else {
}
});
}
// get value here
console.log(getGlobalValue('codeAddress'));

通过这种方式,我们可以通过搜索 setGlobalValue 来跟踪所有全局值,因为这是设置“全局”值上下文的唯一方法。

关于javascript - javascript 中的全局变量应该始终避免吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55433913/

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