ReferenceError: Can't find variable: google"检查是否未定义

"ReferenceError: Can't find variable: google" on checking for undefined

本文关键字:检查 quot 是否 google 未定义 Can ReferenceError find variable      更新时间:2023-09-26

我以为我已经很了解Javascript了,然后这个(看似基本的)东西弹出:

我有一个Phonegap/jQuery移动应用程序,使用谷歌地图。如果手机的互联网连接暂时不可用,并且在应用程序启动时试图加载谷歌地图API的确切时间,那么所有与地图相关的功能自然都无法工作。

然而,奇怪的是这段代码导致它所在的函数在if检查之后中断并停止执行(这意味着doSomething()行永远不会执行):

function myFunction() {
    if(google === undefined) {
        alert("Google Maps didn't load!");
    }
    doSomething();
}

当在Safari的开发者工具中查看控制台时,我在这篇文章的标题中看到了错误。

不检查未定义的变量像这样应该是安全的吗?我想处理未加载谷歌地图API的边缘情况,但如果不能检查未定义,我该怎么做呢?我试着只做if(!google),但这给出了相同的结果。

我也尝试过使用谷歌加载器加载地图API动态当用户导航到使用地图的页面,但我还没有能够得到的工作(加载器将不得不动态加载以及这是有帮助的,我似乎无法动态加载任何脚本)。我也尝试过用纯Javascript动态地做这件事,但我认为谷歌地图API Javascript中的document.write正在打破移动Safari。我也尝试使用jQuery的$.getScript()没有成功。

在任何情况下,我应该能够处理这种边缘情况,如果我能检测到地图API还没有加载,所以这一切归结为:这是如何做到的,为什么上面的未定义检查不起作用?

试试这个:

function myFunction() {
    if(window.google === undefined) {
        alert("Google Maps didn't load!");
    }
    doSomething();
}

这是因为google被解释为一个未声明的标识符,而window.googlewindow的一个属性,可能是undefined,也可能不是。

编辑:

您也可以使用!window.google,因为google是一个对象,因此不能是null, undefined, 0或其他假值。