Javascript ES6 exportar const vs exportar let
Digamos que tengo una variable que quiero exportar. ¿Cuál es la diferencia entre
export const a = 1;
Vs
export let a = 1;
Entiendo la diferencia entre const
y let
, pero cuando los exportas, ¿cuáles son las diferencias?
2 answers
En ES6, import
s son vistas de solo lectura en vivo en valores exportados. Como resultado, al hacer import a from "somemodule";
, no puede asignar a a
sin importar cómo declare a
en el módulo.
Sin embargo, dado que las variables importadas son vistas en vivo, cambian de acuerdo con la variable exportada "raw" en exports. Considere el siguiente código (tomado del artículo de referencia a continuación):
//------ lib.js ------
export let counter = 3;
export function incCounter() {
counter++;
}
//------ main1.js ------
import { counter, incCounter } from './lib';
// The imported value `counter` is live
console.log(counter); // 3
incCounter();
console.log(counter); // 4
// The imported value can’t be changed
counter++; // TypeError
Como puedes ver, la diferencia radica realmente en lib.js
, no main1.js
.
Para resumir:
- No puede asignar a
import
-ed variables, sin importar cómo declare las variables correspondientes en el módulo. - La semántica tradicional
let
-vs-const
se aplica a la variable declarada en el módulo.- Si la variable se declara
const
, no se puede reasignar ni rebotar en ninguna parte. - Si la variable es declarada
let
, solo puede ser reasignada en el módulo (pero no en el usuario). Si lo es cambiada, la variableimport
-ed cambia en consecuencia.
- Si la variable se declara
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-31 12:00:06
Creo que una vez que lo haya importado, el comportamiento es el mismo (en el lugar donde se usará su variable fuera del archivo fuente).
La única diferencia sería si intenta reasignarlo antes del final de este mismo archivo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-14 07:00:45