function(e){ if(e.which==='37'){ // } }
在网上搜索“这个
e
或事件参数是如何工作的”找了半天,还是没有找到答案
假设
e
在这个函数调用之前没有被定义;这个函数调用后e
会变成什么?一个对象?
which 会导致它成为一个对象吗?
我们可以将未定义的变量传递给 JavaScript 中的函数吗?如果我这样做会发生什么?
变量
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 对象,包含有关事件的详细信息)。