最近,我注意到在函数中使用了“ event
”变量,而参数和闭包均未包含该变量。
但是它有效并且存在事件。看起来“ event
”是指window.event。
因此有两个问题:
event
”变量中位于哪个事件?关于事件与窗口事件的说明: 如果直接在devTools控制台中输入“ window.innerHeight”,我们将获得该数字。同样的结果,我们只需输入“ innerHeight”而不输入“ window”即可。
答案 0 :(得分:1)
“为什么?”如果不问编写规范的人,问题是无法真正回答的。 window
对象就是这样工作的,因为它代表全局范围。正如我在评论中提到的那样,无论是否带有window.
前缀,您都可以访问任何全局属性。这是因为全局变量实际上是附加到全局对象的,在本例中为window
-在此全局范围之外没有什么可以。同样,在没有window
对象的其他JS环境中,例如,这是不正确的。在Node中,全局对象被命名为global
。
您可以自己登录并查看:
console.log(window.event);
button.addEventListener('click', function (event) {
console.log(window.event);
});
<button id="button">Click Me!</button>
根据MDN article,在处理事件的函数之外对window.event
的引用是undefined
。您可以从摘要中看到,第一个调用实际上是undefined
,而事件监听器中的第二个则记录了正在处理的事件。