JS:为什么 Event 对象可以在事件处理程序中访问而无需在参数中接受它?
JS: Why is the Event object accessible in event handlers without accepting it in a parameter?
在回顾我过去写的一些 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) it seems like this must apply to every such event, making event
another sort of "sly" local variable like arguments
中出现在函数中而不在参数中请求它。
这让我想知道:
- 这是仅有的两个 "sly" 局部变量吗?
- Chrome 中
event
的这种行为是否与其他浏览器和 JS 环境一致?
根据浏览器,有一个全局 event
变量引用当前触发的事件。
在回顾我过去写的一些 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) it seems like this must apply to every such event, making event
another sort of "sly" local variable like arguments
中出现在函数中而不在参数中请求它。
这让我想知道:
- 这是仅有的两个 "sly" 局部变量吗?
- Chrome 中
event
的这种行为是否与其他浏览器和 JS 环境一致?
根据浏览器,有一个全局 event
变量引用当前触发的事件。