Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在节点中共享范围和变量?_Javascript_Node.js_Scope - Fatal编程技术网

Javascript 如何在节点中共享范围和变量?

Javascript 如何在节点中共享范围和变量?,javascript,node.js,scope,Javascript,Node.js,Scope,我正在编写一个节点程序,我希望包含在单独文件中的几个函数能够访问和修改相同的变量范围,而无需在全局范围内定义它们 我发现的解决方案是使用一个模块来共享它的范围,但这似乎有点棘手 以下是文件树: - index.js - file-a.js - file-b.js - shared-scope.js index.js: 需要“./file-a” 需要“./file-b” 文件-a.js: const sharedScope=require./sharedScope'; sharedScope.f

我正在编写一个节点程序,我希望包含在单独文件中的几个函数能够访问和修改相同的变量范围,而无需在全局范围内定义它们

我发现的解决方案是使用一个模块来共享它的范围,但这似乎有点棘手

以下是文件树:

- index.js
- file-a.js
- file-b.js
- shared-scope.js
index.js:

需要“./file-a” 需要“./file-b” 文件-a.js:

const sharedScope=require./sharedScope'; sharedScope.foo='bar' file-b.js:

const sharedScope=require./sharedScope'; console.logsharedScope//打印{foo:'bar'} shared-scope.js:

module.exports={};
你觉得怎么样?这是在模块之间共享作用域的好方法吗?

当然,这称为单例。有人可能会说,任何全球性的、共享的状态都是不好的,但如果这是你想要的,那么这是一个完美而简单的方法

最明显的替代方法是在一个地方定义数据,然后在其他模块中定义处理数据的函数

file-b.js:

index.js:


那不是范围,那是共享对象。除了全局范围或评估范围之外,您不能真正共享范围。非常感谢!我已经听说过单身汉,但我认为这是一个更复杂的和阶级相关的东西。
module.exports = function (data) {
    data.foo = "bar";
}
const assignFoo = require('./file-b.js');
const data = {};
assignFoo(data);