功能中设置的全局变量不起作用

时间:2016-09-29 23:02:39

标签: javascript jquery

var InfoURL

$.get("https://ipinfo.io", function(response) {
    if(response.ip.indexOf(':') > -1) {
        InfoURL = 'google.com';
    } else {
        InfoURL = 'google.ch';  
    } 
    alert(InfoURL);
}, "jsonp");

alert (InfoURL);

那么为什么第二个alert是一个空变量?我必须改变什么才能使变量成为全局变量?

1 个答案:

答案 0 :(得分:0)

这是因为$.get函数是异步的,你需要使用promises,或者将函数包装到你自己的函数中,它接受这样的回调:

function myGet(callback) {
    $.get("https://ipinfo.io", function(response) {
        if(response.ip.indexOf(':') > -1){
            callback('google.com');
        } else {
            callback ('google.ch');  
        } 
    }, "jsonp")
 }

用法:

myGet(function(data) {
    alert(data);
});