JavaScript · Avançado · Inglês · Técnico
live binding
Nos módulos ES, o nome importado é uma ligação viva à variável exportada, não uma cópia. Se o módulo dono muda o valor, quem importou vê a mudança.
Onde usar
Aparece em code review ao comparar com CommonJS, onde require entrega uma cópia do valor. Também explica por que quem importa não pode reatribuir o nome: a ligação é somente leitura.
Em código
// contador.mjs
export let n = 0;
export function inc() { n++; }
// app.mjs
import { n, inc } from './contador.mjs';
inc();
console.log(n); // 1 (em CommonJS seria 0)Exemplos
Imports are live bindings, so you see the updated value.
Imports são live bindings, então você vê o valor atualizado.
You can't reassign an imported name; the binding is read-only.
Você não pode reatribuir um nome importado; a ligação é somente leitura.
Cuidado
Tentar reatribuir uma variável importada, o que lança TypeError, pois só o módulo dono altera o valor.
Sinônimos
ligação viva