Javascript 我们应该在分配事件之前检查元素是否存在吗?

Javascript 我们应该在分配事件之前检查元素是否存在吗?,javascript,coffeescript,jquery-events,Javascript,Coffeescript,Jquery Events,我看到许多人在分配事件之前检查DOM元素是否存在,例如(coffeescript): 这有必要吗?如果我们只是添加事件,不管元素是否存在,是否会影响性能?jQuery中的每个方法调用都包装在一个函数中。每个函数中,因此通常不需要检查元素是否存在-如果集合为空,则调用的函数不会迭代,它会自动失败。给出的示例就是一个很好的例子,直接调用$('#progressbar').progressbar()不会带来任何伤害或性能损失 如果确实要这样做,可能是因为您正在操作DOM或根据元素的存在执行一些昂贵的操

我看到许多人在分配事件之前检查DOM元素是否存在,例如(coffeescript):


这有必要吗?如果我们只是添加事件,不管元素是否存在,是否会影响性能?

jQuery中的每个方法调用都包装在一个
函数中。每个
函数中,因此通常不需要检查元素是否存在-如果集合为空,则调用的函数不会迭代,它会自动失败。给出的示例就是一个很好的例子,直接调用
$('#progressbar').progressbar()
不会带来任何伤害或性能损失

如果确实要这样做,可能是因为您正在操作DOM或根据元素的存在执行一些昂贵的操作,请确保缓存调用,特别是在调用是复杂选择器的情况下:

specialThings = $('section .special')

if specialThings.length > 0
    doStuffWith specialThings
或者,利用coffeescript的var安全性:

if (specialThings = $ 'section .special').length
    doStuffWith specialThings

我想你会先出错,不是吗?它是从Coffeescript转换成纯javascript的。我猜这个错误不会出现,因为这个事件是在没有用户交互的情况下加载的(参见下面gabrielhilal的回答)。
if (specialThings = $ 'section .special').length
    doStuffWith specialThings