Javascript-设置一个';让';来自浏览器中其他模块的变量

Javascript-设置一个';让';来自浏览器中其他模块的变量,javascript,module,ecmascript-6,constants,let,Javascript,Module,Ecmascript 6,Constants,Let,具体来说,我正在最新版本的Google Chrome中测试这一点,但我怀疑在Edge/Firefox/Safari中也是如此(上次我知道Edge和Firefox在实验javascript标志中隐藏了模块) 在“globals.js”中,我有一个let scale // inside global.js let scale = 1; 在另一个模块中,我想调整刻度 // inside another js file import { scale } from "../JS/globals.js";

具体来说,我正在最新版本的Google Chrome中测试这一点,但我怀疑在Edge/Firefox/Safari中也是如此(上次我知道Edge和Firefox在实验javascript标志中隐藏了模块)

在“globals.js”中,我有一个let scale

// inside global.js
let scale = 1;
在另一个模块中,我想调整刻度

// inside another js file
import { scale } from "../JS/globals.js";
scale = Math.min( scale + ((scale + delta) * speed), target);
但我得到的错误是“常数变量赋值”

我设想了一种显而易见的方法,就是导出一个名为set_scale的函数

// back in globals.js
export function set_scale (value) { scale = value };
我已经为globals.js中的其他几个变量做了这项工作。
但我想知道是否有人有任何其他方法可以克服将let作为常量导出/导入的问题,特别是它是否允许我避免生成更多要导出/导入的内容。

您可以在globals.js文件中执行以下操作:

export default {scale: 1} 
在其他模块中,按如下方式使用:

import global from "global" 

global.scale = ...
... = global.scale

您使用的是什么模块加载器。如果我用node.js(common.js)来做这件事。。在global.js中,我将拥有
module.exports={scale:1}。如果我想改变<代码>常数g=要求(“./全局”);g、 缩放=…
其在chrome中。他们最近在实际浏览器中启用了“导出+导入”。我一开始还不知道它是否能在firefox或edge中运行,但据我所知,safari已经实现了它,其他浏览器都在实验性标志后面隐藏了模块,chrome直到最近还将其隐藏在他们的canary浏览器中,但现在它的最新版本已经可用。很抱歉,我忘记了这一点,我将更新问题以指定这是一个针对浏览器的问题。您也可以这样做,但使用新的ES6语法,而不是common.js。另外->
scale=
你不能这么做,它是从哪里得到的?。您很可能想要
global.scale
。。这可能就是你出错的原因。你不能那样做。。该导入将相当于
const scale=globals.scale
,从对象级别访问,您就可以了。我将执行->
导出默认值{scale:1}
从“global”
导入全局,然后使用like
global.scale=..