如何在javascript中使用事件参数?

时间:2014-04-30 21:33:21

标签: javascript javascript-events

function(e){
   if(e.which==='37'){
   //
   }
 }

在我搜索此e或事件参数如何在互联网上运行的同时,我仍然没有找到答案..

假设在此函数调用之前尚未定义e ...此函数调用后将变为什么?一个东西?

导致它成为对象的是什么?

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

2 个答案:

答案 0 :(得分: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在此函数之外不存在。 JavaScript范围是基于函数的,e的范围仅限于此函数,因为它是函数的形式参数。

  

导致它成为对象的是什么?

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

答案 1 :(得分:0)

  

假设在此函数调用之前尚未定义e ...此函数调用后将变为什么?

无。它将保持undefined

通常,您可以使用像这样的函数作为事件处理程序。在这种情况下,the event object(使用which暗示a keyboard event如果您想要特定的话)是由调用该函数的代码创建的。

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