Por si alguien patinó un poco en el código del segundo ejemplo, aquí lo explico:
Nota: En una función se define un parámetro el cual recibirá y cuando le damos un valor a ese parámetro, ese valor lleva por nombre argumento.
functiondateFunction(callback) {
console.log(newDate);
setTimeout(function() {
let dateVariable = newDate;
callback(dateVariable);
}, 3000);
}
functionprintDate(dateNow) {
console.log(dateNow)
}
dateFunction(printDate);
Se llama la función dateFunction con la función printDate como argumento, pero esta tiene dateNow como parámetro de la misma.
Al ingresar a dateFunction imprime la fecha actual con la primera línea de console.log(new Date).
Después ingresa al setTimeOut poniendole un tiempo de 3000 milisegundos para retornar y hará lo siguiente:
Se declara dateVariable y se asigna (guarda) una nueva fecha en esa declaración.
Al llegar callback(dateVariable); siendo callback la función printDate que tiene como orden imprimir su parametro “dateNow” el cual su argumento es dateVariable.