事件参数在javascript中是如何工作的?

事件参数在javascript中是如何工作的?,javascript,javascript-events,Javascript,Javascript Events,在互联网上搜索了一段时间后,我仍然没有找到答案 假设在此函数调用之前未定义e。。。在这个函数调用之后,e将变成什么?一个物体 是什么导致它成为一个对象 我们可以在javascript中将未定义的变量传递给函数吗?如果我这样做了,会发生什么 假设在此函数调用之前未定义e。。。在这个函数调用之后,e将变成什么 没什么。它将保持未定义状态 通常,您会将这样的函数用作事件处理程序。在这种情况下,(使用,这意味着如果您想具体化的话)是由调用函数的代码创建的 在大多数情况下,这些代码将内置到浏览器中,而不是

在互联网上搜索了一段时间后,我仍然没有找到答案

假设在此函数调用之前未定义e。。。在这个函数调用之后,e将变成什么?一个物体

是什么导致它成为一个对象

我们可以在javascript中将未定义的变量传递给函数吗?如果我这样做了,会发生什么

假设在此函数调用之前未定义e。。。在这个函数调用之后,e将变成什么

没什么。它将保持未定义状态

通常,您会将这样的函数用作事件处理程序。在这种情况下,(使用
,这意味着如果您想具体化的话)是由调用函数的代码创建的


在大多数情况下,这些代码将内置到浏览器中,而不是由您直接编写。

变量
e
是函数的一个参数。忘掉一分钟的事件,考虑一下这个函数:

function(e){
   if(e.which==='37'){
   //
   }
 }
此函数接受名为
e
的内容,并警告
该值的属性。请注意,此功能与以下功能相同:

function doStuff(e) {
    alert(e.which);
}
这表明我们可以随意调用该参数,但我们选择将其称为
e

您可以直接调用函数,如下所示:

function doStuff(firstParam) {
    alert(firstParam.which);
}
其中每一个调用
doStuff
,并传入带有
属性的某个对象,该属性被
doStuff
函数体称为
e

现在假设我们使用
doStuff
作为事件侦听器:

doStuff({ which: 46 });
doStuff({ which: 57 });
doStuff({ which: "Bob" });
这告诉浏览器在用户每次按键时调用
doStuff
。用作
e
值的内容取决于导致
keypress
事件发生的键

在这个函数调用之后,e将变成什么

e
不存在于此功能之外。JavaScript作用域是基于函数的,
e
的作用域仅限于此函数,因为它是函数的形式参数

是什么导致它成为一个对象


否,
只是作为
e
参数提供的事件对象的对象属性。当函数作为事件监听器调用时,作为函数的第一个参数传递的值始终是一个对象(具体来说,是一个,包含事件的详细信息)。

这里有一个很好的解释,它还列出了对象可以拥有的所有属性:谢谢昆汀!那么e和event等价于在函数中使用吗?event对象作为第一个参数传递给函数。这个名字是你定义的。如果你喜欢,你可以叫它毛茸茸的兔子。
document.addEventListener("keypress", doStuff);