范围困难

时间:2014-05-09 12:34:25

标签: javascript google-maps scope

我有谷歌地图javascript代码不行为,我认为它与范围有关,但我无法弄清楚。以下是相关的代码:

function initialize() {
    google.maps.event.addListener(MapArea, 'click', showIW);

    function showIW(event) {

        function moreInfo(){
            //...
        }
        infoWindow.setContent(moreInfo());
    }
}
google.maps.event.addDomListener(window, 'load', initialize);

这不起作用(moreInfo未定义),但是,这样做:

function initialize() {
    google.maps.event.addListener(MapArea, 'click', showIW);

    function showIW(event) {
        infoWindow.setContent(moreInfo());
    }
}

function moreInfo(){
//...
}

google.maps.event.addDomListener(window, 'load', initialize);

为什么在第一个场景中未定义moreInfo(),即使我在调用之前定义了moreInfo()?

1 个答案:

答案 0 :(得分:0)

问题是你只是定义了B函数并没有调用它。

所以,B内的任何内容都永远不会执行。我也没有看到你给A打电话,既然你没有回复任何东西,那就是undefined

您可以使用自动执行功能或只是调用它。

function A() {
    function B() {
        function C(){
            //...
        }
        // call C()
    }
    B(); // you call it here, which in turn calls C
}