Javascript - window.addEventListener

Javascript - window.addEventListener

本文关键字:addEventListener window Javascript      更新时间:2023-09-26

所以我有这个代码:

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);
});

你的代码有几个问题:

  1. 您在回调函数中声明了变量x。因此,您无法从全局范围访问它
  2. 即使您在全局范围内声明了变量x并在回调函数中定义了它,console.log仍然会打印undefined,因为当调用console.log时,x的值还没有定义,因为从未调用过回调函数(最多在事件循环的下一次迭代中调用)

解决方案是在全局范围中声明x,在load事件的第一个回调函数中定义它,并在load事件的第二个回调函数进行后处理。然而,这是一个非常糟糕的解决方案。更好的解决方案是将所有内容移动到load事件的第一个回调函数中,如下所示:

window.addEventListener("load", function () {
    var x = 2;
    alert(x);
});

希望能有所帮助。

相关文章:
  • 没有找到相关文章