Por qué no devolver false en un controlador de evento en jQuery

Durante mucho tiempo he abusado de devolver false en los controladores de eventos de jQuery.

Por ejemplo:

$( 'a.un-link' ).on( 'click',
  function ( oEvent ) {
    // Hacer algo aquí!

    return false;
  }
);

Ese return false; es equivalente a hacer:

oEvent.preventDefault();
oEvent.stopPropagation();

Mi impresión es que está haciendo demasiado, ya que es posible que queramos que el evento se propague a alguno de los contenedores superiores.

En la mayoría de casos lo único que estamos intentando es prevenir que al hacer click, se redireccione a la dirección en el href del enlace, y para eso con oEvent.preventDefault() sería suficiente. Es por eso que estoy siguiendo las siguientes pautas en mi código más reciente:

  • oEvent.preventDefault() al inicio del método.
  • No devolver nada.
$( 'a.some-link' ).on( 'click',
  function ( oEvent ) {
    oEvent.preventDefault();
    // Hacer algo aquí!
  }
);

Esto impedirá la redirección y permitirá a los controladores superiores tratar el evento.