13

I have two files, file1 exports a variable 'not a constant' var x=1 and file2 which imports this variable from it

the problem is that I canno't modify that imported variable even it is not a constant!

file1.js

export var x=1 //it is defined as a variable not a constant

file2.js

import {x} from 'file1.js'
console.log(x) //1
x=2 //Error: Assignment to constant variable

2 Answers 2

14

That's an effect of the immutable exported module values. You can override that with another function in the same module

In your file 1 :

export let x = 1;
export function modifyX( value ) { x = value; }

In your file 2

import { x, modifyX } from "file1.js"

console.log( x ) // 1;
modifyX( 2 );
console.log( x ) // 2;
Sign up to request clarification or add additional context in comments.

1 Comment

and yet we can assign properties directly to x. x.foo = 2; works fine, if we have export let x = { foo: 3 }; So the value isn't immutable. Only the binding to the top level value.
0

you can try to set the x as an object property like this:

export default {
    x: 1
}

then from your second file:

import file1API from "./file1.js";

console.log(file1API.x); //1
file1API.x = 2;
console.log(file1API.x); //2

note that the value of x will also be updated in "file1.js".

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.