event是一个全局变量,可以在回调链中的任何位置访问

Is event a global variable that is accessible everywhere inside the callback chain?

本文关键字:回调 访问 位置 任何 全局变量 一个 event      更新时间:2023-09-26

我只是在玩DOM和Javascript的事件监听器,并注意到了这一点:

function chained(msg) {
    console.log(msg, event);
}
function onClick() {
    chained('the body was clicked');
}
document.body.addEventListener('click', onClick);

现在有趣的是。。。这将输出:

"身体被点击,(鼠标事件)";

然后我问,为什么?它如何在不通过chained调用发送事件对象的情况下传递事件对象?

function chained(msg) {
    console.log(msg, namedEventObj); //throw error namedEventObj is not defined
}
function onClick(namedEventObj) {
    console.log(event); //outputs (MouseEvent);
    console.log(nameEventObj); //outputs (MouseEvent);
    chained('the body was clicked');
}
document.body.addEventListener('click', onClick);

即使我将要在onClick函数上传递的事件obj声明为namedEventObj,它也只能用于onClick,而不能用于chained函数。。。我得到了这个,这对我来说很有意义……但绝对不是chained函数可用的event变量。

有人知道它为什么会这样吗?

我唯一能想到的是,事件实际上是window.event,当一些事件调度和event。。。但这意味着,如果在触发事件的同时调用任何元素,都可以获得该事件信息?

我使用的是Chrome 11.0.x

可以通过window.event访问当前事件。仅仅使用event就是隐式地访问window.event