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

问题描述 投票:0回答:2
function(e){
   if(e.which==='37'){
   //
   }
 }

在网上搜索“这个

e
或事件参数是如何工作的”找了半天,还是没有找到答案

假设

e
在这个函数调用之前没有被定义;这个函数调用后
e
会变成什么?一个对象?

which 会导致它成为一个对象吗?

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

javascript dom-events
2个回答
1
投票

变量

e
是函数的参数。暂时忘掉事件并考虑这个功能:

function doStuff(e) {
    alert(e.which);
}

此函数接受称为

e
的东西,并提醒该值的
which
属性。注意这个函数是一样的:

function doStuff(firstParam) {
    alert(firstParam.which);
}

这表明我们可以随意调用参数,但我们选择调用它

e
.

您可以像这样直接调用该函数:

doStuff({ which: 46 });
doStuff({ which: 57 });
doStuff({ which: "Bob" });

这些中的每一个调用

doStuff
并传入一些具有
which
属性的对象,
doStuff
函数体称为
e

现在假设我们使用

doStuff
作为事件监听器:

document.addEventListener("keypress", doStuff);

这告诉浏览器在每次用户按下一个键时调用

doStuff
。用作
e
值的内容取决于导致
keypress
事件发生的键。

这个函数调用后 e 会变成什么?

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

which 会导致它成为一个对象吗?

不,

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


0
投票

假设在这个函数调用之前没有定义e...在这个函数调用之后e会变成什么?

没什么。它将保持

undefined
.

通常,您会使用这样的函数作为事件处理程序。在这种情况下,事件对象(使用

which
意味着键盘事件,如果你想具体的话)是由调用函数的代码创建的。

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

© www.soinside.com 2019 - 2024. All rights reserved.