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

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

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

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