鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全  HTML/ js 全局變數(shù)失?。?/span>

js 全局變數(shù)失敗?

navigator.geolocation.getCurrentPosition(successCallback);

    function successCallback(position){
        var lat = position.coords.latitude;
        var long = position.coords.longitude;
    }

    var map;
    function initMap() {
      map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: lat, lng: long},
        zoom: 8
      });
    }
    </script>
    <script src="https://maps.googleapis.com/maps/api/js?key=xxx&callback=initMap"
    async defer></script>

更新代碼~
這樣要怎麼把lat跟long 丟到initMap?

回答
編輯回答
青黛色

你想用的話,就在那個(gè)successCallback里面用因?yàn)橹挥欣锩娌拍鼙WC有這個(gè)值。因?yàn)槭?strong>異步的

2018年9月21日 20:16
編輯回答
維他命

資料參考:https://developer.mozilla.org...
上面解釋了getCurrentPosition()方法是一個(gè)異步執(zhí)行方法:

*調(diào)用 getCurrentPosition() 函數(shù)獲取用戶當(dāng)前定位位置。這會(huì)異步地請(qǐng)求獲取用戶位置,并查詢定位硬件來(lái)獲取最新信息。**當(dāng)定位被確定后,定義的回調(diào)函數(shù)就會(huì)被執(zhí)行。**您可以選擇性地提供第二個(gè)回調(diào)函數(shù),當(dāng)有錯(cuò)誤時(shí)會(huì)被執(zhí)行。第三個(gè)參數(shù)也是可選的,您可以通過(guò)該對(duì)象參數(shù)設(shè)定最長(zhǎng)可接受的定位返回時(shí)間、等待請(qǐng)求的時(shí)間和是否獲取高精度定位。*

而alert(lat)是同步代碼,會(huì)先執(zhí)行,也就是在lat沒(méi)有賦值的情況下就被執(zhí)行到了,會(huì)打印undefined

2017年9月10日 19:37
編輯回答
萢萢糖

這個(gè)很正常啊,因?yàn)槟愕?code>successCallback沒(méi)有被調(diào)用啊,它是一個(gè)回調(diào)函數(shù),而你現(xiàn)在的寫(xiě)法執(zhí)行到alert(lat)的時(shí)候不一定就回調(diào)了。

你在successCallback的最好調(diào)用initMap就好啦啊。

2017年9月21日 23:59