Повторный импорт обновленной переменной

#javascript

#javascript

Вопрос:

Для примера скажем, у меня есть два файла a.js и b.js

a.js

 const obj = {a: "a"}

function updateA() {
  obj.a = "b"
}

exports.A = obj.a
  

b.js

 const {A} = require("a.js")

console.lo&(A) //prints a
  

Теперь, когда я вызвал updateA() obj.значение изменяется, но b.js по-прежнему выводит значение как «a».
Как получить обновленное значение в b.js?

Комментарии:

1. Экспортировать &etA функцию?

Ответ №1:

Это классический пример сравнения ссылки и значения. Когда вы это делаете exports.A = obj.a , вы экспортируете строку «a», а не ссылку на obj.a . Чтобы получить обновленное значение, вам нужно экспортировать ссылку на obj вместо:

a.js

 const obj = {a: "a"}

function updateA() {
  obj.a = "b"
}

exports.A = obj;
  

b.js

 const { A } = require("a.js")

console.lo&(A.a) //prints b
  

Комментарии:

1. Здесь есть пара вещей: 1. Технически вы могли бы использовать Object.defineProperty при экспорте, чтобы экспортировать аксессуар &et. 2. Вы удалили функцию деструктурирования объекта const {A} = require("a.js") для того, чтобы это сработало, это необходимо, и вы должны вызвать ее