JavaScript代码段中的奇怪“未定义变量”

时间:2012-09-01 05:38:28

标签: javascript

我是一名c ++程序员,因此java脚本中的以下未定义变量错误对我来说很奇怪。我已经定义了一个全局变量directionResult,下面的代码初始化了它的值:

function calcRoute() {
    var iMap = {
        departure:"tiran,esfahan",
        destination:"esfahan"
    }
    var request = {
        origin : iMap.departure,
        destination : iMap.destination,
        travelMode : google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(result);
            document.getElementById("log").innerHTML = result.routes[0];
            directionResult = result;
        }
    });
}

在最后,如果directionResult将等于result,这是回调函数的参数。但在另一个功能中:

function showSteps() {
    var myRoute = directionResult.routes[0].legs[0];
    var point = myRoute.steps[index].start_point;
    var inst = myRoute.steps[index++].instructions;
    obj.setPosition(point);
    document.getElementById('inst').innerHTML = inst;
    map.panTo(point);
    if (index >= myRoute.steps.length)
        clearInterval(timer);
} 

当我想在第一行使用directionResult时,我遇到了这个错误:

  

TypeError:directionResult未定义

我该如何解决这种奇怪的行为?谢谢。

1 个答案:

答案 0 :(得分:0)

directionResult未定义的一个可能原因可能是因为您在设置之前尝试引用它。虽然你的showSteps()函数出现在calcRoute()函数之后,但是在触发directionsService.route()回调之前不会设置directionResult,这可能是在AJAX请求之后发生的(大概)。

尝试从directionsService.route()回调函数中调用showSteps()。