Javascript - window.addEventListener
Javascript - window.addEventListener
所以我有这个代码:
window.addEventListener("load", function() {
var x = 2;
});
console.log(x); // undefined
有没有办法让这个代码在不影响回调中的代码的情况下工作?
如果我没有弄错,你想做这样的事情:
var x;
window.addEventListener("load", function () {
x = 2;
});
window.addEventListener("load", function () {
alert(x);
});
你的代码有几个问题:
- 您在回调函数中声明了变量
x
。因此,您无法从全局范围访问它 - 即使您在全局范围内声明了变量
x
并在回调函数中定义了它,console.log
仍然会打印undefined
,因为当调用console.log
时,x
的值还没有定义,因为从未调用过回调函数(最多在事件循环的下一次迭代中调用)
解决方案是在全局范围中声明x
,在load
事件的第一个回调函数中定义它,并在load
事件的第二个回调函数进行后处理。然而,这是一个非常糟糕的解决方案。更好的解决方案是将所有内容移动到load
事件的第一个回调函数中,如下所示:
window.addEventListener("load", function () {
var x = 2;
alert(x);
});
希望能有所帮助。
相关文章:
- 没有找到相关文章