Как изменить значение переменной из другого модуля в javascript - PullRequest
0 голосов
/ 16 марта 2020

Я использую Webpack в качестве компоновщика и нигде не могу найти ответ на свой вопрос.

Например, у меня есть индекс файла. js, который содержит:

import { Func } from './func.js'
export let foo = 'bar';

Func();
console.log(foo);

У меня есть другой файл, скажем, забавный c. js, который содержит:

import { foo } from './index.js';
export const Func = () => { foo = 'baz' }

Но изменить значение переменной из другого модуля невозможно.

Как сделать Вы работаете с такими ситуациями, если я не хочу перемещать функцию 'Fun c' в индекс. js?

Я также знаю, что возможно изменять объекты, но использование объекта не всегда является вариантом .

1 Ответ

1 голос
/ 16 марта 2020

foo это примитив. Вы не можете изменить это значение, назначенное ему в другом модуле, когда это примитив, вы можете изменить только значение foo, назначенное в области действия текущего модуля.

Вы всегда можете сделать это однако с функциями:

let foo = 'initial value';

export const getFoo = () => foo;
export const setFoo = (val) => (foo = val);
import { getFoo, setFoo } from 'someModule';

getFoo(); // initial value;

// call this when necessary
setFoo('jim'); 
import { getFoo } from 'someModule';

// when called after `setFoo` has been called in the other module
getFoo(); // 'jim'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...