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

103
Visualizações
Los parámetros predeterminados de desestructuración de objetos obtienen todos los argumentos

Tengo un archivo js con opciones y funciones predeterminadas importadas como se muestra a continuación. Estoy tratando de obtener todos los argumentos en la función, sin embargo, parece que no se pueden usar.

 import {defaultOptions} from "../defaults.js" export function getConfig({ width = defaultOptions.width, height = defaultOptions.height, fontsize = defaultOptions.fontsize } = {}) { console.log(width); //shows width // I want to get all the arguments console.log(arguments); }

Cuando llamo a la función sin parámetros como getConfig() y console.log(width) , muestra el ancho de las defaultOptions predeterminadas de defaults.js . Sin embargo console.log(arguments) devuelve el objeto Argumentos con una longitud de 1 donde el índice 0 : undefined .

¿Hay alguna manera de obtener todos los argumentos en tal función?

Actualización: consulte este JSFiddle para ver algo similar donde los valores predeterminados se especifican antes que la función, por ejemplo. https://jsfiddle.net/coolakul/fa9muzwh/8/

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Argumentos vs. Parámetros

Para esta pregunta, es importante distinguir entre argumentos y parámetros . Los argumentos son lo que se pasa a la función cuando se invoca, sin tener en cuenta cómo la función se desestructura o establece los valores predeterminados en esos valores. Entonces, cuando llama a getConfig() sin argumentos y registra arguments.length , debe ser 0, independientemente de cómo getConfig desestructura o establece los valores predeterminados.

Los parámetros , por otro lado, son las variables en la definición de función que utiliza. Se les pueden asignar valores predeterminados o se pueden derivar de un argumento desestructurado.

No está claro lo que está buscando, si es un objeto que refleja los parámetros que usa la función o si es un objeto que refleja los valores pasados a la función (incluidas las variables no definidas desestructuradas). Voy a repasar ambos casos.

Parámetros

Para reconstituir los parámetros, una forma bastante torpe es usar las variables desestructuradas en un nuevo objeto:

 import {defaultOptions} from "../defaults.js" export function getConfig({ width = defaultOptions.width, height = defaultOptions.height, fontsize = defaultOptions.fontsize } = {}) { // just assign them to parameters var parameters = { width, height, fontsize }; console.log(parameters); }

Alternativamente, si defaultOptions representa todos y solo los parámetros pasados a la función (es decir, solo tiene width , height , tamaño de fontsize ), puede asignarlos con sintaxis extendida :

 import {defaultOptions} from "../defaults.js" export function getConfig(options = {}) { var calculatedParameters = { ...defaultOptions, ...options }; var { width, height, fontsize } = calculatedParameters; console.log(calculatedParameters); }

Valores pasados a la función (incluyendo variables no definidas desestructuradas)

Para reconstituir los valores pasados, puede desestructurar el argumento y luego asignarlo nuevamente a una variable. Esta variable es casi idéntica al argumento en sí. En el siguiente ejemplo, los calculatedArguments son casi idénticos a options , excepto que ahora tendrán propiedades de ancho, alto y tamaño de fuente, incluso si representan valores indefinidos:

 import {defaultOptions} from "../defaults.js" export function getConfig(options = {}) { var { width, height, fontsize } = options; var calculatedArguments = { width, height, fontsize }; console.log(calculatedArguments); // can also assign width, height, fontsize with default values ({ width = defaultOptions.width, height = defaultOptions.height, fontsize = defaultOptions.fontSize } = options); }
about 4 years ago · Juan Pablo Isaza Relatório

0

let defaults = { width: 300, height: 500, symbsize: 25, margin: { top: 10, bottom: 10 } } class Config { constructor({ width = defaults.width, height = defaults.height, symbsize = defaults.symbsize, margin = defaults.margin } = defaults) { this.width = width this.height = height this.symbsize = symbsize this.margin = margin } getConfig() { return { width: this.width, height: this.height, symbsize: this.symbsize, margin: this.margin } } } const config = new Config({height: 1}) console.log(config.getConfig());

usar la clase debería hacer el trabajo, o prefiero usarlo

about 4 years ago · Juan Pablo Isaza Relatório

0

Si no me equivoco, prueba esto:

 import { defaultOptions } from "../defaults.js"; export function getConfig(arguments = {}) { const { width, height, fontsize } = arguments; console.log(width); console.log(arguments); } getConfig(defaultOptions);
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