Su pregunta realmente tiene nada en absoluto que ver consetTimeout
. Simplemente necesita comprender la diferencia entre una llamada de función y una referencia a una función.
Considere estas cuatro tareas:
var one = function() { mike.showName(); };
var two = mike.showName;
var three = mike.showName();
var four = (function() { mike.showName(); })();
Los dos primeros asignar una referencia a una función de sus respectivas variables. Las últimas dos, sin embargo, llaman a las funciones (para eso están los paréntesis) y asignan sus valores de retorno a los vars en el lado izquierdo.
cómo se relaciona con setTimeout:
La función setTimeout
espera como primer argumento una referencia a una función, ya sea de manera one
o two
anterior sería correcto, pero three
y four
no lo haría. Sin embargo, es importante tener en cuenta que no es, en sentido estricto, un error para pasar el valor de retorno de una función a setTimeout
, aunque con frecuencia verá eso.
Esto es perfectamente normal, por ejemplo:
function makeTimeoutFunc(param) {
return function() {
// does something with param
}
}
setTimeout(makeTimeoutFunc(), 5000);
No tiene nada que ver con la forma en setTimeout
recibe una función como argumento, pero que lo hace.
¿Qué diferencia de rendimiento está notando? –
Estoy bastante seguro de que OP significa "comportamiento" cuando dice "rendimiento". –