我无法理解jQuery变量范围。
var myVar;
function getMyVar() {
myVar = 'test';
}
$(window).load(function() {
getMyVar();
});
alert(myVar);
此代码会提醒'undefined',我需要它来显示'test',我想在这里了解我的范围问题。
答案 0 :(得分:3)
这不是范围问题。
alert
即使在触发window.load
事件之前也会被执行,这是变量myVar被赋值为'test'的地方。
根据MDN文件:
加载事件在文档加载过程结束时触发。在 至此,文档中的所有对象都在DOM中,而且都是 图像和子帧已完成加载。
答案 1 :(得分:2)
问题是在加载窗口之前不会调用getMyVar,而是立即执行警报。因此,警报在定义变量之前发生。它不是关于范围,而是关于窗口加载函数的异步执行。
答案 2 :(得分:1)
范围界定不仅限于jQuery。它的javascript如何定义范围是这里的规则。 jQuery是一个建立在javascript之上的库。
话虽如此,你宣布一个人人都可以访问的全局变量。但是,分配在DOM完成加载后发生。警报语句立即运行。
如果您在调用.load
后在getMyVar()
内移动提醒,则会看到输出正确的值。
答案 3 :(得分:0)
这不是范围问题。
alert(myVar);
在getMyVar();