我是一名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未定义


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

最佳答案

directionResult未定义的一种可能原因可能是因为您试图在设置它之前引用它。尽管您的showSteps()函数出现在calcRoute()函数之后,但直到触发DirectionsService.route()回调(直到大概在AJAX请求之后发生)之后,才会设置directionResult。

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

关于javascript - JavaScript代码段中奇怪的“ undefined variable ”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12225219/

10-11 16:00