【发布时间】:2023-02-17 13:41:06
【问题描述】:
包.json
{
"type": "module"
}
用户.js
let users = ["Jack", "Mary"];
export default users;
索引.js
import users from './users.js';
users = [];
执行 index.js 后出现错误:
users = [];
^
TypeError: Assignment to constant variable.
为什么? users 被明确定义为变量而不是常量。
【问题讨论】:
-
你为什么要重新分配它?这看起来很像XY Problem。来自docs'静态导入语句用于导入只读由另一个模块导出的实时绑定。
-
这只是一个简化的例子,以便更好地理解。我也很好奇这里发生了什么。你能让我好奇吗?
-
请参阅文档链接,无论它们在模块中如何声明,导入的绑定都是只读的。也就是说,模块内的
let对于模块范围内的重新分配可能很重要。但是重新分配导入的绑定会断开变量与模块的连接,从而失去其实用性。如果你需要一个副本,你可以克隆导入的数组let userCopy = [...user]; -
万分感谢!事实证明,我应该在模块内部重新分配这个数组的值。
标签: javascript