从函数内部获取Javascript变量

Get Javascript variable from inside function

本文关键字:Javascript 变量 获取 内部 函数      更新时间:2023-09-26

我是一个全新的编码,我正在玩谷歌地图。我有我的地图设置在html窗口,我有不同的poi的旋转木马,我已经硬编码到地图。我希望poi标记根据旋转木马中可见的位置进行更改。我已经能够检索活动的carousel项目(this.item),但无法从该函数中获取变量。谢谢你的帮助。

navigator.geolocation.getCurrentPosition(function(position) {
        this.pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
         this.item =  $('#this-carousel-id .carousel-inner .item.active').attr("data-id");
        markerCurrentPosition = new google.maps.Marker({
            map: map,
            position: pos,
            icon: currentPositionIcon,
        });
        map.setCenter(pos);
        }, function() {
            handleNoGeolocation(true);
    });
    // watch for user's current position
    watchId = navigator.geolocation.watchPosition(updateUserPosition);
} else {
    // Browser doesn't support Geolocation
    handleNoGeolocation(false);
}

this.item不是变量。this是一个对象,item是对象中一个属性的键。当您使用以下语法时:

this.item = something;

您正在将key:value对(属性)分配给this对象,其值为something

如果您将对象视为字符串,它将看起来像这样:

{"item":"something"}

要使一个值在函数外部可用,可以创建一个全局对象,并将该值放在全局对象内部。

var objGlobalForValues = {}; //Create a global object available globally
    navigator.geolocation.getCurrentPosition(function(position) {
         .... Deleted to minimize code
         var myInfo =  $('#this-carousel-id .carousel-inner .item.active').attr("data-id");
        objGlobalForValues['myPropertyName'] = myInfo;
        .... Deleted to minimize code
}

有关JavaScript对象的信息,请参阅本文档:

Working With Objects - Mozilla

要将变量从函数中取出,您必须在函数的作用域之外影响变量…例如:

var t = {};
function test() {
   t["out"] = 1;
}
function test2() {
   console.log(t["out"]);
}

test2();
test();
test2();

函数test影响对象t内部的变量。然后函数test2可以读取存储在out中的内容。在您的示例中,变量可以存储在其他函数可以访问的其他地方。实现这一目标的最简单方法是将变量存储在window变量中。但是强烈建议不要这样做,因为它可以被任何其他函数/脚本覆盖。

作为javascript的新手,您应该阅读更多关于异步函数的内容。