
Diego Grueso
PreguntaHay algo que no he logrado entender, porque algunas funciones se llaman con los paréntesis (), y porque simplemente las otras no. o sea no los usa y de igual manera trabajan.
O sea cual es la diferencia de en una parte del código escribirla así y en otras simplemente no.
-
funciónEjemplo (); --> Se ejecuta
-
funciónEjemplo --> Referencia

Luis Lira
En ocasiones depende el uso que les estás dando, por ejemplo hay una funciones de JavaScript llamada Higher Order Functions que en realidad reciben otra función, la primera función se encargará de ejecutar la que nosotros le pasemos.
Por ejemplo, la función
map
[1, 2, 3].map((number) => { console.log(number) }) [1, 2, 3].map(function (number) { console.log(number) }) [1, 2, 3].map(console.log)
Las tres tendrán el mismo resultado porque map se encargará de ejecutarlas y como puedes ver, nosotros podemos ejecutarlas explícitamente como en los ejemplos 1 y 2, o podemos dejarlo implícito como en el ejemplo 3.

Diego Grueso
Ok entiendo, pero puedes aclararme lo siguiente:
setTimeout(this.siguienteNivel, 600); --> hice un debug, y this es nuestra clase Juego,
setTimeout( ()=>{ this.siguienteNivel(); //funciona sin problemas }, 500); ---> con arrow function, this sigue siendo nuestra clase Juego
setTimeout( function(){ this.siguienteNivel(); //Uncaught TypeError: this.siguienteNivel is not a function, y si quito los parentesis no generar error y this toma otro valor }, 500); ---> this ya es el objeto Window y no se ejecuta siguienteNivel.
Disculpa que te haga nuevamente esta pregunta, pero la verdad aquí no logro entender, por que uso tres variantes de las cuales estamos usando en todo el curso, pero veo que ocurre algo con el this, dependiendo del modo que use el setTimeou.

Juan Jiménez
La diferencia es que cuando se usa el paréntesis () se ejecuta la función y cuando no se usan los paréntesis () se está haciendo referencia a la función (como un objeto o una variable).