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);