J'utilise des modules ES6 et j'importe une variable de moduleA
dans moduleB
:
//moduleA.js
let a = 5;
let b;
export { a, b };
//moduleB.js
import { a, b } from './moduleA'
a = 6;
b = 1;
Mais en cas de changement/affectation dans moduleB
je reçois une erreur telle que:
a = 6;
ReferenceError: a n'est pas défini
En revanche je peux console.log(a)
dans moduleB
.
Il semble qu'il n'est pas possible d'assigner aux variables importées? Est-ce vrai ou est-ce que je manque la façon de le faire? Pourquoi n'est-ce pas possible?
import { a, b } from './moduleA'
est similaire à
const a = ...
const b = ...
en ce que vous ne pouvez pas attribuer la valeur par la suite. Ce n'est pas tout à fait la même chose car les valeurs can changent, mais elles ne peuvent être changées qu'à partir de inside le module. Donc tu pourrais faire
let a = 5;
function setA(value) {
a = value;
}
export { a, setA };
avec
import { a, setA } from "./moduleA";
setA(4);
console.log(a); // 4
De l'extérieur d'un module, vous pouvez muter une valeur, comme vous le feriez avec const
, comme si vous modifiez une propriété sur un objet, mais vous ne pouvez pas faire pointer la variable sur un objet entièrement différent.
Vous pouvez utiliser un objet au lieu de variables, comme ceci la référence ne change pas:
//moduleA.js
let object = {
a: 5,
};
export { object };
//moduleB.js
import { object } from './moduleA'
object.a = 6;
object.b = 1;