所以我有这段代码:
window.addEventListener("load", function() {
var x = 2;
});
console.log(x); // undefined
无论如何都要使这段代码工作而不影响回调中的代码吗?
答案 0 :(得分:0)
如果我没有记错,你想做这样的事情:
var x;
window.addEventListener("load", function () {
x = 2;
});
window.addEventListener("load", function () {
alert(x);
});

您的代码存在一些问题:
x
。因此,您无法从全局范围访问它。x
并在回调函数中定义它,console.log
仍会打印undefined
,因为调用console.log
时,由于从未调用过回调函数,因此尚未定义x
的值(最好是在事件循环的下一次迭代中调用它)。解决方案是在全局范围内声明x
,在load
事件的第一个回调函数中定义它,并在{{1的第二个回调函数中完成后处理事件。然而,这是一个非常糟糕的解决方案。更好的解决方案是将所有内容移动到load
事件的第一个回调函数中,如下所示:
load

希望有所帮助。