如果错误,请更正我require()
函数以某种方式将.js
文件导入当前文档中的复制文件,这样如果var name
同时存在于两个模块中,则第二个覆盖第一?
如何定义仅限文件范围的变量
请注意,我想在我的.js
文件中的任何函数之外定义我的变量,而不是global scope
有哪些解决方案,使用关键字var
会影响变量范围,function
中除javascript
以外的范围定义的范围可以{{1}对象可用于在一个文件中定义私有变量
的 module1.js
module
module2.js
var name = 'i am module 1'
foo = () => console.log(name)
module.exports = foo
main.js
var name = 'i am module 2'
foo = () => console.log(name)
module.exports = foo
答案 0 :(得分:0)
在javascript中直接在“.html”文件中加载.js
文件时,在函数外部声明的变量将在全局范围内注册。为了防止这类事情,人们开始使用IIFE
函数并将单个文件包装在IIFE
中。但是在现代Javascript
中,您可以使用我们在modules
和模块加载器中使用的Nodejs
来加载这些文件。现在,现代浏览器支持ECMAScript modules
,您可以直接使用它们。
使用模块的主要好处是您不必使用IIFE
函数来阻止在全局范围内注册的变量。现在,除非您将该文件导出,否则该文件中声明的每个变量都只对该文件是私有的。
例如: module1.js
var name = 'my name';
function getName(){
return name;
}
module.exports = {
getName
}
在上面的示例中,name
对于此文件是私有的,除非您将其导出,否则只能在其他文件中使用它。