i timer funzionano molto più velocemente se passi loro una funzione piuttosto che una stringa (altrimenti javascript deve fare un eval implicito)

ed è praticamente necessaria qualora volessi passare dei parametri in modo agevole a quel metodo

ovviamente all'interno di una funzione anonima (o di uno scope annidato creato implicitamente) perdi il riferimento a this per cui devi passarlo dichiarando una variabile con la keyword 'var' nello scope immediatamente esterno (esempio 1) oppure passare il riferimento a this in una funzione (esempio 2)

L'esempio 2 ad esempio è concettualmente presente in diverse applicazioni che usano jQuery per evitare conflitti con la funzione $: si esegue una funzione anonima che wrappa l'oggetto 'jquery' così

codice:
(function($) {
  /* qui si può usare l'oggetto '$' senza rischiare interferenze con altre librerie.
})(jQuery);