Javascript 用自己的方法而不是内联方法创建事件处理程序是否总是更好?
哪种方法更好?为什么?如果不是那么黑和白,什么样的例子需要哪种方法Javascript 用自己的方法而不是内联方法创建事件处理程序是否总是更好?,javascript,javascript-events,Javascript,Javascript Events,哪种方法更好?为什么?如果不是那么黑和白,什么样的例子需要哪种方法 function bindStuff() { var myElement = document.getElementById('someElement'); myElement.addEventListener('click', function(e) { // do stuff }); } 或 如果是非常小的代码,可以将其内联,但是如果您正在做不止一件事情,那么读取代码就更加困难 没
function bindStuff() {
var myElement = document.getElementById('someElement');
myElement.addEventListener('click', function(e) {
// do stuff
});
}
或
如果是非常小的代码,可以将其内联,但是如果您正在做不止一件事情,那么读取代码就更加困难
没有100%正确的答案,但一般来说,如果它是一个语句,则可以内联它,而多个语句应该有各自的方法。您通常应该选择您认为最容易阅读和维护的样式。然而,第二种选择确实有一个缺点:它是 实际上,我更喜欢第三种选择:
function bindStuff() {
var myElement = document.getElementById('someElement');
var clickHandler = function(e) {
// do stuff
}
myElement.addEventListener('click', clickHandler);
}
但是,这主要是一个偏好问题。有一种情况下,首选
命名处理程序
假设您将一个处理程序绑定到一个元素;由于某种原因,必须删除该元素。你移除它;绑定DOM元素/处理程序如何
这种情况会导致内存泄漏。此外,如果您将同一个处理程序绑定到一个模仿您先前删除的元素,则可能会出现一些缺陷
每当需要删除已绑定处理程序的DOM元素时,请使用名为的处理程序
,因为在解除DOM和处理程序的绑定时需要传递处理程序
因此,与addEventListener
相对应的是removeEventListener
,这会导致非常固执己见的结果,但一般来说:不,您使用的方法取决于用例、具体情况以及大部分个人偏好。通常,您希望使用(和修改)事件处理程序内父函数作用域中的一些变量,例如myElement
内bindStuff
。在这种情况下,您需要闭包,因此您无法轻松提取处理程序。这实际上是我在寻找答案方面的更多内容。
function bindStuff() {
var myElement = document.getElementById('someElement');
var clickHandler = function(e) {
// do stuff
}
myElement.addEventListener('click', clickHandler);
}