Javascript 为什么不是';jQuery是否能够访问此导入的全局变量?

Javascript 为什么不是';jQuery是否能够访问此导入的全局变量?,javascript,jquery,webpack,es6-modules,Javascript,Jquery,Webpack,Es6 Modules,试图更改我在jQuery中导入的全局定义变量会导致引用错误: global.js export var w = window.innerWidth; main.js import {w} from './global.js'; console.log(w); $(document).ready(function(){ ... console.log(w); w = window.innerWidth; console.log(w); }); 前两个控制台打印出

试图更改我在jQuery中导入的全局定义变量会导致引用错误:

global.js

export var w = window.innerWidth;
main.js

import {w} from './global.js';
console.log(w);
$(document).ready(function(){
    ...
    console.log(w);
    w = window.innerWidth;
    console.log(w);
});
前两个控制台打印出值,但第三个控制台给出

main.js:31未捕获引用错误:未定义w

这和网页包有关吗?我在开发工具中看到了这一点:

console.log(_global_js__WEBPACK_IMPORTED_MODULE_3__["w"]);
w = window.innerWidth;
console.log(w);

好像它不是同一个变量,但是如何让jQuery设置webpack变量?

在ES6模块系统中,您不能重新分配从其他模块导入的值。导入的值对于其他模块是只读的。这就是它的本意。否则消费者会在不知道提供者的情况下改变提供者的价值

但是,您可以提供一种方法来更改提供者本身的值:

global.js:提供者

var w = window.innerWidth;
var changeW = function(newValue) {
   w = newValue;
}
export { w, changeW }
在main.js中:

import {w,changeW} from './global.js';
console.log(w);
$(document).ready(function(){
...
   console.log(w);
   changeW(window.innerWidth); //call method to change value
   console.log(w);
});