我在main.js中有一个变量let activeNode;。它可以通过键盘输入或鼠标输入进行更改。处理每一个的函数被模块化到它们自己的文件keyboard.js和mouse.js中。activeNode被导出到这些模块中。
每当函数尝试重新赋值导入的变量activeNode时,console都会记录错误Uncaught TypeError: Assignment to constant variable.
我见过其他答案说,在main.js中也创建并导出一个函数updateVariable(var),然后在模块中调用它来重新分配activeNode,但我不希望仅仅为了重新分配一个变量就创建导出和整个函数。
有没有其他方法来完成跨模块的变量重新赋值?(而且不必将变量传递到模块函数调用中,因为鼠标输入函数调用在main.js中嵌套得很深,我不想让一个参数穿过一堆更高级别的函数。)
发布于 2021-08-06 01:38:16
我已经有大约一百万年没有做过“严肃的”Javascript编程了,所以我的回答会更笼统,而不是最先进的。
@Saran Surya是对的-代码示例在这里会有所帮助,我们看不到你是如何做你正在做的事情的。
如果你这样做,Uncaught TypeError: Assignment to constant variable就会发生if(x = y)当你的意思是if(x == y)提醒我,我曾经花了一个小时试图调试一个错误,结果是If(x == y) (大写i) --这个故事的寓意是,错误的原因可能比你想象的要基本得多。
另一种可能是您没有意外地将某些内容声明为const,是吗?
或者,您是否声明了变量但没有初始化它(当它被鼠标/键盘调用时)?
改变策略,只是将activeNode声明为全局变量?
或者,一种方法是使用单独的主/键盘/鼠标类,简单地将activeNode公开为main类上的公共字段。
class main{
activeNode = '';
}
class mouse{
DoSomethingMousey(){
main.activeNode = 'I am a mouse';
}
}https://stackoverflow.com/questions/68670826
复制相似问题