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

217
Vistas
¿Por qué la importación del módulo ECMAScript ES no sigue el estándar de desestructuración?

En JavaScript puedo renombrar e importar el módulo de esta manera

 import { original_name as alias_name } from 'my_module'

¿Hay una buena explicación para la necesidad de como palabra clave y asentir simplemente siguiendo el excelente estándar de desestructuración?

¿Por qué no algo como esto:

 import { original_name: alias_name } from 'my_module'

Solo una curiosidad siempre me viene a la mente

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

0

La respuesta es, por supuesto, son diferentes porque hacen cosas diferentes y solo tienen similitudes en la sintaxis.

Pero tal vez haya una mejor razón por la que fueron diseñados de esa manera. Experimenté con los módulos de Node.JS de la siguiente manera:

 // origin.js export let specialNumber = 2; setInterval(() => { specialNumber = Math.random(); }, 400)
 // importer.js import { specialNumber as aliasAttempt } from './origin.js' import * as StarImport from './origin.js' let { specialNumber: destructuringAttempt } = StarImport; setInterval(() => { console.log(aliasAttempt, destructuringAttempt); }, 400)

Aquí, destructuringAttempt siempre dará "2" (el valor que obtuvo cuando fue desestructurado), mientras que aliasAttempt seguirá cambiando. Por ejemplo:

 0.3600619094195876 2 0.33268826082163194 2 0.20684912705131553 2 0.8665522020482055 2 0.9349778920742413 2

Parece que destructuringAttempt se copió por valor durante la desestructuración, mientras que aliasAttempt mantiene la referencia a la variable let specialNumber .

(este comportamiento de destructuringAttempt se espera como let { specialNumber: destructuringAttempt } = StarImport; es exactamente lo mismo que let destructuringAttempt = StarImport.specialNumber; es decir, acaba de copiar el número)

Entonces, tal vez la razón fue que, si la exportación es un valor no constante, el 'aliasing' da un resultado diferente ("mantener la referencia a la otra variable") del comportamiento típico de desestructuración ("copiar una vez"), por lo tanto, es mejor distinguir las sintaxis.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Hacen cosas diferentes:

  • La desestructuración es una forma de acceso a la propiedad, generalmente combinada con una declaración de variable como const , y posiblemente incluso un inicializador predeterminado
  • La importación de una variable declara un alias para un enlace en el ámbito del módulo

La diferencia importante es que la desestructuración ejecuta código (prueba la coercabilidad de objetos, ejecuta captadores) mientras que las declaraciones de importación son totalmente declarativas (establecen dependencias entre módulos, lo que permite la elevación entre módulos incluso antes de que se inicialicen las variables). Esto hace que este último sea estáticamente analizable. Los alias de importación tampoco tienen concepto de objetos anidados.

Ambos permiten "cambiar el nombre", pero usan una sintaxis diferente para diferentes cosas; de lo contrario, habría sido demasiado confuso. El hecho de que sus formas abreviadas sean similares entre sí es principalmente una coincidencia, debido a que ambos usan llaves.

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