我几乎以同样的方式宣布事件论证多年和年:
element.onclick = function(e){};
element.onclick = function(event){};
element.addEventListener("click", function(e){}, false);
element.addEventListener("click", eventHandler, false); //preferred version
function eventHandler(e){}
etc.
e
还是event
。 你能做到这一点:
function eventHandler(e, a, b, c, d){}
e
仍在引用该事件,还是d
?
要完成上述工作,您需要明确使用关键字event
?
所以一般的问题是:在JavaScript中的函数中声明事件参数时有哪些经验法则?
答案 0 :(得分:1)
在下文中,我假设您指的是关于DOM事件处理程序。
必须是
e
还是event
。
没关系。我们所关心的可能是ajdlahksjd
。
它是作为最后一个参数追加还是也可以是第一个?
事件对象将始终作为第一个参数传递给处理程序。
你能做到这一点:
function eventHandler(e, a, b, c, d){}
e
仍在引用该事件,还是d
?
这取决于您如何绑定事件处理程序。如果您只是分配它,它将是e
。如果您已将其他值绑定到参数,例如通过.bind
,它将是第一个未绑定的参数。但是,这与事件处理程序没有任何关系。事件处理程序本身也将事件对象作为第一个参数。
要完成上述工作,您需要明确使用关键字
event
?
event
不是关键字。您可以根据需要为参数命名。
在JavaScript中的函数中声明事件参数时有哪些经验法则?
没有。您的事件处理程序没有神奇的静态检查。它只是一个接受论证的函数,就是它。
但是,肯定有约定来命名参数e
或event
,因为它是表示事件对象的变量的合理名称
答案 1 :(得分:0)
我个人认为没有这方面的规则,但是伟大的Nicholas Zakas在他的书 Maintainable JavaScript 中说,如果你想要一个易于测试和维护的功能,您永远不必按如下方式声明事件:
function myFunction(event) {}
相反,您必须声明函数所需的参数:
function myFunction(clientX, clientY) {}
当你调用函数时,你必须传递来自object事件的参数:
// This won't work on IE8 and older versions.
element.addEventListener('click', function(event) {
myFunction(event.clientX, event.clientY);
}, false);
当您或您团队中的其他人必须测试此功能时,他/她不需要模拟任何事件。