Javascript 为什么不是';jQuery是否能够访问此导入的全局变量?
试图更改我在jQuery中导入的全局定义变量会导致引用错误: global.jsJavascript 为什么不是';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); }); 前两个控制台打印出
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);
});