function(e){ if(e.which==='37'){ // } }
在我搜索此e或事件参数如何在互联网上运行的同时,我仍然没有找到答案..
假设在此函数调用之前尚未定义e ...此函数调用后将变为什么?一个东西?
导致它成为对象的是什么?
我们可以将未定义的变量传递给javascript中的函数吗?如果我这样做会发生什么?
答案 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如果您想要特定的话)是由调用该函数的代码创建的。
在大多数情况下,该代码将内置于浏览器中,而不是由您直接编写。