Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda