¿Por qué declarar var timer = setTimeout(etc.) ejecuta automáticamente la función setTimeout()? ¿Y cómo pasaría una función setTimeout() como una variable sin que setTimeout() se ejecute automáticamente?
var do_this = function(params){console.log("executes automatically, but function is only declared")}; var delay = 50; var timeoutID = setTimeout(do_this(), delay) //executes automaticallyLas funciones como setTimeout requieren una función de devolución de llamada que se puede llamar en el momento en que expira el temporizador. Cuando solo proporciona una función, se llama inmediatamente porque nunca se agrega a la cola de devolución de llamada.
Por lo tanto, debe pasarle una función de devolución de llamada:
setTimeout( () => ... )