gpt4 book ai didi

javascript - jquery 中的变量在没有 var 的情况下定义时给出 Uncaught ReferenceError

转载 作者:行者123 更新时间:2023-11-28 13:13:26 25 4
gpt4 key购买 nike

我的 javascript 文件中的一段代码

$(document).ready(function(){
gsdk.init();
});

// Note: No var in the prefix of gsdk and it is also declared only here
gsdk = {
init : some function...
}

当我在 html 页面中添加这个 javascript 文件并运行时,它给出

Uncaught ReferenceError :gsdk未定义(...)

最佳答案

该代码依赖于 The Horror of Implicit Globals 1,分配给未声明的标识符会创建一个全局变量。

要得到您所描述的错误,ready“事件”必须在代码运行之前已经触发,因为 jQuery 的 ready 特点是困惑的:如果页面已经准备好,则同步调用其回调;如果没有,则异步调用它。

如果它异步调用回调,您不会收到错误,因为分配给 gsdk 的代码将在回调中的代码之前运行,创造全局并赋予其值(value)。

无论如何,修复方法是:

  1. 声明 gsdk,不要依赖可怕的隐式全局变量,并且

  2. 将其初始化移至您的 ready 代码之上,这样,如果您的 ready 回调被同步调用, gsdk 已初始化并可供使用。

例如:

// 1. Declare the variable, don't rely on The Horror of Implicit Globals.
// 2. Make certain it has its value before setting up your `ready` callback, since
// apparently you're doing this when the page is already ready.
var gsdk = {
init : some function...
};

$(document).ready(function(){
gsdk.init();
});
<小时/>

1 (这是我贫血的小博客上的一篇文章。)

关于javascript - jquery 中的变量在没有 var 的情况下定义时给出 Uncaught ReferenceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40714522/

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