node.js 中低于全局范围的范围
A scope below the global scope in node.js
因此,我是 JS、节点和范围界定的新手。我见过很多人说永远不要使用全局变量,而其他人则说要非常谨慎地使用它们。基本上,我有一个 declares/resets 变量的函数。
function resetStuff(){
var foo = '';
var bar = false;
...
}
和一个 socket.io 处理程序。
io.on('connection', function(socket){
socket.on('event1', function (data){
if (foo == 'bar') {
doStuff()
}
});
});
对我来说,我似乎必须将 foo
和 bar
移动到全局范围,但是有什么方法可以让 socket.io 事件访问它们而无需执行这个?
谢谢!
不,node.js 有一个模块范围。因此,函数之外的每个变量都只是模块范围,而不是全局变量。 (不像客户端浏览器中的 js,其中每个不在函数中的变量都将在全局范围内)
所以,您可以:
var foo,bar;
io.on ....
此外,您可以使用未命名函数定义未命名范围:
(function(){
var foo,bar;
io.on ....
})();
因此,我是 JS、节点和范围界定的新手。我见过很多人说永远不要使用全局变量,而其他人则说要非常谨慎地使用它们。基本上,我有一个 declares/resets 变量的函数。
function resetStuff(){
var foo = '';
var bar = false;
...
}
和一个 socket.io 处理程序。
io.on('connection', function(socket){
socket.on('event1', function (data){
if (foo == 'bar') {
doStuff()
}
});
});
对我来说,我似乎必须将 foo
和 bar
移动到全局范围,但是有什么方法可以让 socket.io 事件访问它们而无需执行这个?
谢谢!
不,node.js 有一个模块范围。因此,函数之外的每个变量都只是模块范围,而不是全局变量。 (不像客户端浏览器中的 js,其中每个不在函数中的变量都将在全局范围内)
所以,您可以:
var foo,bar;
io.on ....
此外,您可以使用未命名函数定义未命名范围:
(function(){
var foo,bar;
io.on ....
})();