Explicador de Mi asistente
Objetivo de este acertijo: Usar una función de devolución de llamada para cambiar qué tarea hace myAssistant
.
Tutorial de la solución: myAssistant
es una función que toma 2 entradas: un string que se almacenará en el parámetro time
, y otra función que se almacenará en el parámetro callbackFunction
.
Cuando usas una función como la entrada de otra función, se llama “función de devolución de llamada” o simplemente “devolución de llamada”. Esto es distinto de las funciones de anidamiento que hiciste con print(pickRandom(10))
o drawBox(pickrandom(color))
porque print()
y drawBox()
en realidad solo usan la salida final de la llamada pickRandom()
. El asistente toma el nombre de la función para que pueda ejecutar esa función dentro de sí mismo.
El código de inicio tiene el comando myAssistant('6pm', recordShow)
. recordShow
es el nombre de una función que se creó en algún código oculto adicional. '6pm'
se almacenará en el parámetro time
y recordShow
se almacenará en el parámetro callbackFunction
.
Cuando se ejecuta myAssistant()
, registra un mensaje que te permite saber que comenzó. Luego, usa sus parámetros, time
y callbackFunction
, para ejecutar el comando callbackFunction(time)
. Dado que sabemos qué hay almacenado en cada uno de esos parámetros, el comando es el mismo que recordShow('6pm')
. Esto llamará a la función recordShow()
con el argumento '6pm'
.
En la parte inferior de tu código, puedes hacer que el “configure una alarma” o “encienda las luces” usando setAlarm
o turnOnLights
como la función de devolución de llamada. Solo recuerda que el primer argumento de myAssistant()
debe ser la hora (un string) y el segundo argumento es el nombre de una función (ya sea setAlarm
o turnOnLights
)
Solución del código de ejemplo:
(Pulsa a continuación para revelar)
function myAssistant (time, callbackFunction) {
console.log('I am your personal assistant, and I am happy to help with your request');
callbackFunction(time);
}
myAssistant('6pm', recordShow);
myAssistant('10am', setAlarm);
Conceptos de JavaScript: funciones de devolución de llamada, funciones de llamada, bloque de código (función), console.log()
Código adicional (código oculto que se ejecuta antes del código del acertijo):
function setAlarm(time) {
console.log('Your alarm has been set for ' + time);
}
function turnOnLights(time) {
console.log('Your lights will be turned on at ' + time);
}
function recordShow(time) {
console.log('Your show will be recorded at ' + time);
}