鍍金池/ 問答/HTML5  HTML/ 求助:javascript里求如何調(diào)用局部變量

求助:javascript里求如何調(diào)用局部變量

1、javascript里求如何調(diào)用局部變量;
alert放在函數(shù)里可以顯示,但是放在外面顯示是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>
回答
編輯回答
氕氘氚

call 方法啊

2017年5月20日 06:25
編輯回答
臭榴蓮

debugger; 搞一下,看一下具體是怎樣的執(zhí)行流程,自然也就明白其中道理了.

2017年8月14日 03:43
編輯回答
熟稔

你考慮考慮是不是有異步操作啊

2017年7月1日 13:22
編輯回答
孤巷

寫在里面不行么?為什么非要寫在外面呢?
看看你這個需求是不是必須的?

2018年2月28日 12:15
編輯回答
萢萢糖

既然是局部變量,自然生命周期就是局部,如果要全局調(diào)用,就申明一個全局變量,然后在函數(shù)內(nèi)部賦值。

2018年6月10日 00:36
編輯回答
胭脂淚

這個searchComplete是個回調(diào),請求完成了就對ttime賦值了,你放在外面,請求都沒完成,沒觸發(fā)到回調(diào),ttime自然就是undefined

2017年8月26日 10:32
編輯回答
默念

閉包就是很好的解決調(diào)用函數(shù)體內(nèi)的局部變量的很好的方案。

2017年8月5日 16:04
編輯回答
挽青絲
setTimeout(() => {  
        alert(ttime)
    }, 1000);
2018年6月6日 05:55