在回顾我过去写的一些 JS 时,我注意到我正在尝试访问 event.keyCode
在事件处理程序中,但我的函数的唯一参数是 e
,不是event
。所以,虽然我希望得到 "Uncaught ReferenceError: event is not defined"
,我反而发现我的脚本按预期工作(至少在 Chrome 中)。
document.body.addEventListener('keyup', function(e) {
if (event.keyCode === 13) {
// ...
}
});
事实上,如果我放置 console.log(e === event)
在该处理程序中,我得到 true
。
经过一些测试(在 a JS Bin 中),似乎这必须适用于每个此类事件,使得 event
另一种“狡猾”的局部变量,如 arguments
出现在函数中而不在参数中要求它。
这让我想知道:
- 这是仅有的两个“狡猾”的局部变量吗?
- 此行为是否属于
event
在 Chrome 中与其他浏览器和 JS 环境一致吗?
最佳答案
根据浏览器的不同,有一个全局 event
引用当前触发事件的变量。
关于javascript - JS : Why is the Event object accessible in event handlers without accepting it in a parameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43421398/