gpt4 book ai didi

javascript - 为什么 `var exports = module.exports = {};` 有效但 `let exports = module.exports = {};` 无效?

转载 作者:搜寻专家 更新时间:2023-11-01 00:21:22 25 4
gpt4 key购买 nike

在我的项目代码优化期间,我替换了 var 的所有实例关键词 let因为我认为 var 没有特别的用途.为此,我在所有文件中执行了“查找和替换”操作。

在一些自定义模块中,我使用了如下语句:

var exports = module.exports = {};

效果很好。

现在,将其替换为 let 之后,它变成了:

let exports = module.exports = {};

现在不工作,报错

SyntaxError: Identifier 'exports' has already been declared

虽然我可以使用 var并避免这个问题,我还是想知道这背后的原因是什么。

编辑:我没有使用过let exports = <something>;同一模块文件中的任何位置。所以这是我声明的唯一声明 exports变量。

最佳答案

原因是因为 exports 已经在 Nodejs 模块系统中初始化了。

https://nodejs.org/api/modules.html#modules_module_exports

对象存在,module.exports 当模块加载时。由于 let 是范围特定的,它会阻止您限制范围。 const 也会失败。

关于javascript - 为什么 `var exports = module.exports = {};` 有效但 `let exports = module.exports = {};` 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43413432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com