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

110
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 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