Javascript 值设置为null时返回未定义的函数

Javascript 值设置为null时返回未定义的函数,javascript,google-maps,Javascript,Google Maps,我有一个函数,返回一个有效地址的坐标,但我有一些困难是它是一个无效地址。 我希望为pos1获得一个空值,如果geocode找不到有效地址,我会在函数中设置它。但是我没有定义,我知道我在做一些非常愚蠢的事情,但就是不知道它是什么 function fnCalculate(){ var pos1=getCordinates(document.getElementById("address1").value)); alert(pos1); } function getCordinates(ad

我有一个函数,返回一个有效地址的坐标,但我有一些困难是它是一个无效地址。 我希望为pos1获得一个空值,如果geocode找不到有效地址,我会在函数中设置它。但是我没有定义,我知道我在做一些非常愚蠢的事情,但就是不知道它是什么

function fnCalculate(){

var pos1=getCordinates(document.getElementById("address1").value));

alert(pos1);

}

function getCordinates(address){

    var loc;    

    if(address){
        geocoder.geocode({ 'address': address}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                loc=results[0].geometry.location;
             } 
        else {
                loc=null;
            }

        });
    }

    return loc;

    }   

您的问题是,geocoder的回调函数在“getCoordinates()”返回很久之后才会运行。您编写的代码的结构根本不起作用。与期望“getCoordinates()”返回某些内容不同,您需要编写它,以便在位置可用时传入另一个要调用的函数

比如:

function getCoordinates(address, callback) {

  if(address){
    geocoder.geocode({ 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            callback( results[0].geometry.location );
        } 
        else {
            callback( null );
        }

    });
  }
}
然后,在调用函数时,传入另一个处理结果的函数:

getCoordinates(document.getElementById("address").value, function( loc ) {
  //
  // ... do something with "loc" ...
  //
});

谢谢您的回答,有可能将结果返回到变量吗?不,不可能。回调函数由“.geocode()”方法调用,或间接从其XHR回调调用,因此它不会关注您的返回值(除非它出于自身目的而这样做)。异步环境要求您以一种与编写普通过程代码时截然不同的方式来考虑代码中的控制流。