¿Por qué no puedo pasar una llamada de función (en lugar de una referencia de función o una función anónima) a setTimeout ()?

¡Por favor ignore el hecho de que este código no logra nada y disculpas por lo que probablemente sea una pregunta tonta!

Entiendo que no puedo pasar una llamada de función asetTimeout() como el primer argumento, peropor qué no puedo hacer eso?

let names = ['Andy', 'Ross', 'David'];

function printer (name) {
 console.log(name);
}

names.forEach(name => setTimeout(printer(name), 1000);

Resultado:

Andy
timers.js:327
    throw new TypeError('"callback" argument must be a function');
    ^

Puedo resolver el problema usando una referencia aprinter y usandobind() mandarname junto con esto, pero ¿por qué debo seguir estos pasos adicionales?

let names = ['Andy', 'Ross', 'David'];

function printer (name) {
  console.log(name);
}

names.forEach(name => setTimeout(printer.bind(null, name), 1000));

Resultado:

Andy
Ross
David

Respuestas a la pregunta(5)

Su respuesta a la pregunta