Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
¿Es posible proporcionar parámetros predeterminados con el operador de descanso?

Estaba aprendiendo de un curso esencial de ES6 y probando los parámetros predeterminados y el operador de descanso para las funciones. He definido una función sayHi como se muestra a continuación con parámetros predeterminados y luego restar al operador que no da el resultado deseado.

 const sayHi = (greetings, ...names) => { names.forEach(item => { console.log(`${greetings} ${item}`); }); } sayHi('Hi', 'Ahsan', 'Awais', 'Haseeb');

El fragmento anterior funciona como se desea. pero cuando traté de establecer un valor de parámetro predeterminado para la variable de greetings , funciona pero da un resultado no deseado, es decir, la variable de greetings toma el valor 'Ahsan' .

 const sayHi = (greetings = ' Hi', ...names) => { names.forEach(item => { console.log(`${greetings} ${item}`); }); } sayHi('Ahsan', 'Awais', 'Haseeb');

¿Hay alguna manera de establecer parámetros predeterminados en funciones como la anterior antes del operador de descanso?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

No puedes, no. El parámetro resto solo recoge el "resto" de los parámetros no consumidos por ningún parámetro formal anterior, por lo que greeting siempre recibirá el valor del primer argumento.

Por separado, dado que tanto los nombres como el saludo tienen el mismo tipo, no puede proporcionar ningún valor predeterminado si desea aceptar los nombres de esa manera.

Un par de opciones para ti:

Una función al curry

Podría tener una función que acepte el saludo y devuelva una función que lo use con lo que sea que le pase:

 const greet = (greeting = "Hi") => (...names) => { for (const name of names) { console.log(`${greeting} ${name}`); } }; greet()("Ahsan", "Awais", "Haseeb"); greet("Hello")("Ahsan", "Awais", "Haseeb");

Tenga en cuenta cómo lo llamamos:

 greet()("Ahsan", "Awais", "Haseeb");

greet() crea la función utilizando el saludo predeterminado. Luego llamamos a esa función usando ("Ahsan", "Awais", "Haseeb") en ella. greet("Hello") crea una función que usa el saludo "Hello" (y luego lo llamamos).

(También me tomé la libertad de usar for..of en lugar de forEach , pero es una cuestión de estilo).

Tomar nombres como una matriz

Otra opción es aceptar los nombres como una matriz. De esa forma, podemos saber dentro de la función si recibimos un saludo o no:

 const greet = (greeting, names) => { if (Array.isArray(greeting)) { names = greeting; greeting = "Hi"; } for (const name of names) { console.log(`${greeting} ${name}`); } }; greet(["Ahsan", "Awais", "Haseeb"]); greet("Hello", ["Ahsan", "Awais", "Haseeb"]);

about 4 years ago · Juan Pablo Isaza Denunciar

0

solo tiene que pasar indefinido en el primer parámetro para omitir el argumento opcional
piénsalo así greetings = typeof greetings != 'undefined' ? greetings : "hi" , lo que significa que verifique el valor de los greetings y, si no está definido (no proporcionado), use el valor predeterminado
editar: aquí está el fragmento de código

 const sayHi = (greetings = ' Hi', ...names) => { names.forEach(item => { console.log(`${greetings} ${item}`); }); } sayHi(undefined, 'Ahsan', 'Awais', 'Haseeb');
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda