Una pregunta de práctica de JavaScript sobre los closures dice lo siguiente:
Cambie la función para admitir múltiples llamadas a funciones:
function joinWords(a, b) { return console.log(a + ' ' + b); }Vea los casos de ejemplo a continuación para conocer las entradas de ejemplo y sus resultados esperados.
Entrada 1:
const saludar = unirPalabras("Hola");
saludar("mundo);
Salida 1:
"Hola Mundo"
Entrada 2:
const saludar = unirPalabras("Hola", "¡ahí!");
saludar("Donde", "es", "Foo", "Bar?");
Salida 2:
"¡Hola! ¿Dónde está Foo Bar?"
Para la solución, implementé con éxito un cierre, pero todavía estoy registrando parámetros indefinidos en la consola. También conocido como, para el primer caso de prueba (Entrada 1 y Salida 1) estoy dando salida a Hello indefinido Mundo indefinido indefinido indefinido. ¿Cómo puedo excluir elegantemente parámetros indefinidos aquí?
function joinWords(a, b) { return function(c, d, e, f) { console.log( a + ' ' + b + ' ' + c + ' ' + d + ' ' + e + ' ' + f ); }; }Es posible que esté buscando parámetros de descanso , que hacen que la función acepte cualquier cantidad de argumentos y los pase como una matriz (a la que luego se puede llamar el método .join ):
function joinWords(...values) { return values.join(" "); }