Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

200
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!