gpt4 book ai didi

javascript - 窗口对象的全局变量始终未定义

转载 作者:行者123 更新时间:2023-12-03 11:09:48 24 4
gpt4 key购买 nike

我的项目中有2个js文件

第一个.js:

(function () {
"use strict";

function konumBul() {

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(konumGoster, konumHata, {enableHighAccuracy: true});
} else {
alert("Geolocation is not supported by this browser.");
}
}

function konumGoster(position) {

//merkez koordinatları
window.merkez = L.latLng(position.coords.latitude, position.coords.longitude);
}
konumBul();
}());

第二个.js:

(function () {
"use strict";

alert(window.merkez); //undefined
alert(merkez) //undefned
}());

如何在 secondary.js 中访问“merkez”变量?为什么我使用的方法不起作用?

编辑:我对此写下了抱歉。我在 first.js 文件中调用了 someFunction()

最佳答案

根据您的示例,someFunction() 永远不会被调用,因此 window.center 永远不会被计算。通过将first.js更改为以下两种方法可以解决此问题:

(function () {
"use strict";
window.center = L.latLng(position.coords.latitude, position.coords.longitude);
}());

或者:

(function () {
"use strict";
function someFunction() {
window.center = L.latLng(position.coords.latitude, position.coords.longitude);
}
someFunction();
}());

编辑:

您的问题是 getCurrentPosition() 是一个异步函数。这意味着在加载第二个脚本之前您的回调可能不会执行。有几种方法可以解决这个问题。您可以使用 Promise 实现或仅在第二个文件中使用简单的超时循环,例如:

(function () {
"use strict";
function doWorkWithResult() {
if (window.merkez == undefined) {
setTimeout(doWorkWithResult, 100); //Callback hasn't been called yet, wait 100 ms
} else {
alert(window.merkez);
}
}

doWorkWithResult();
}());

关于javascript - 窗口对象的全局变量始终未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27662608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com