Javascript - 变量范围

时间:2015-12-01 14:15:03

标签: javascript

我定义了名为“delka”和“sirka”的变量,我想在下面的函数中更改它们的值。显然,我做错了,因为当函数结束时,那些变量不受它的影响。为什么?谢谢答案。

var sirka;
var delka;
var mestoNaLL = document.getElementById("mesto").value;
var geocoder =  new google.maps.Geocoder();
        geocoder.geocode( { "address": mestoNaLL }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                sirka = results[0].geometry.location.lat();
                delka = results[0].geometry.location.lng();         
            } else {
                alert("Chyba: " + status);
            }
        });

        //undefined, why?
        alert(mestoNaLL + " " + sirka + " " + delka + " ");

修改

这是同样的问题,对吧?

//works fine
alert(markers[index].title + " " + infoWindows[index].content);

                    markers[index].addListener("click", function() {

                        //error - undefined
                        alert(markers[index].title + " " + infoWindows[index].content);

                        infoWindows[index].open(map, markers[index]);
                        map.setZoom(14);
                        map.setCenter(markers[index].getPosition());            
                    });

1 个答案:

答案 0 :(得分:0)

以下代码为asynchronous code。这意味着,它不会像其他人一样执行。在执行该代码之前,将执行警报,从而为您提供未定义的。

$this->db->insert('wifi_regs', $data);  
if ($this->db->affected_rows() == 1)
   return true;

return false;

解决方案是取geocoder.geocode( { "address": mestoNaLL }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { sirka = results[0].geometry.location.lat(); delka = results[0].geometry.location.lng(); } else { alert("Chyba: " + status); } }); 内的alert

OK