Secondo Gregory Baker & Erik Arvidsson (Google), creando una funzione con nome e passando di essa a setTimeout è in realtà più veloce della creazione di una funzione anonima (riferimento: Ottimizzazione del codice JavaScript - > Evitare le insidie con le chiusure ):
Creating a closure is significantly slower then creating an inner function without a closure, and much slower than reusing a static function. For example:
<snip>
function alertMsg() {
var msg = 'Message to alert';
alert(msg);
}
is slower than:
function setupAlertTimeout() {
window.setTimeout(alertMsg, 100);
}
Nei miei test, non sembra esserci alcuna differenza significativa ( jsPerf qui ), quindi perché affermano che la creazione una funzione con nome intero è più veloce di una semplice funzione anonima?
EDIT: nota che mi riferisco in modo specifico agli ultimi due esempi, il primo è stato rimosso per maggiore chiarezza.