Если x
является неизменным значением, то оно будет передано обоим этим файлам как 1 в вашем сценарии. Если вы измените x
позже в других файлах. Оригинал x
не изменится.
// foo.js
let x = 1;
setTimeout(() => {
console.log('original: ', x);
}, 1000);
module.exports = x;
//a.js
let x = require('../lib/foo');
x = 2;
console.log('required x: ', x);
//output
require x: 2
original: 1
Если x
является изменяемым значением, то независимо от того, где оно будет изменено, оно будет действовать на все x
, где оно используется.
// foo.js
let x = {
a: 1
};
setTimeout(() => {
console.log('original: ', x);
}, 1000);
module.exports = x;
//a.js
let x = require('../lib/foo');
x.a = 2;
console.log('required x: ', x);
//output
require x: {a: 2}
original: {a: 2}