繁体   English   中英

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

您的代码有几个问题:

  1. 您在回调函数中声明了变量x 因此,您无法从全局范围访问它。
  2. 即使您在全局范围内声明了变量x并在回调函数中对其进行了定义, console.log仍会打印undefined因为调用console.log时,由于从未调用过回调函数,所以x的值尚未定义(充其量,它将在事件循环的下一次迭代中调用)。

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

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

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM