Javascript文件或模块范围只有变量

时间:2017-12-08 04:02:40

标签: javascript node.js module scope

如果错误,请更正我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

1 个答案:

答案 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对于此文件是私有的,除非您将其导出,否则只能在其他文件中使用它。