求助:javascript里求如何调用局部变量

1、javascript里求如何调用局部变量;

alert放在函数里可以显示,但是放在外面显示是undefined。

2、代码如下:


<html>

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

    <style type="text/css">

        body, html,#allmap {width: 90%;height: 90%;overflow: hidden;margin:0;font-family:"微软雅黑";}

    </style>

    <script src="http://search.dangdang.com/Standard/Search/Extend/hosts/js/jquery.js"></script>

    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=nCRvMdrWkhF3kg0RsTdUvku6"></script>

    <title>出行</title>

</head>

<body>

<div id="allmap"></div>

</body>

</html>

<script type="text/javascript">

    var map = new BMap.Map("allmap");

    map.centerAndZoom(new BMap.Point(118.799154,32.066449), 12);

    map.enableScrollWheelZoom();

    var ttime;

    var tdistance;

    var s;

    var p1 = new BMap.Point(118.790662,32.057327);

    var p2 = new BMap.Point(118.812128,32.046538);

    var searchComplete = function (results){

        if (transits.getStatus() != BMAP_STATUS_SUCCESS){

            return ;

        }

        var plan = results.getPlan(0);

        this.ttime = plan.getDuration(true);  //获取时间

        tdistance = plan.getDistance(true);  //获取距离



    };

    var transits = new BMap.TransitRoute(map, {renderOptions: {map: map},

        onSearchComplete: searchComplete});

    transits.search(p1, p2);

    alert(ttime)

</script>

</html>


RISEBY
浏览 865回答 5
5回答

慕虎7371278

这个searchComplete是个回调,请求完成了就对ttime赋值了,你放在外面,请求都没完成,没触发到回调,ttime自然就是undefined

墨色风雨

既然是局部变量,自然生命周期就是局部,如果要全局调用,就申明一个全局变量,然后在函数内部赋值。

largeQ

setTimeout(() => {&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; alert(ttime)&nbsp; &nbsp; }, 1000);

慕码人2483693

debugger; 搞一下,看一下具体是怎样的执行流程,自然也就明白其中道理了.

慕姐8265434

你考虑考虑是不是有异步操作啊
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript