在Javascript中(使用node.js时),如何知道/定义变量的范围?

在Javascript中(使用node.js时),如何知道/定义变量的范围?,javascript,node.js,Javascript,Node.js,如果我在传递的函数中定义了一些东西,例如 var name=“无论什么” 现在是否可以从应用程序的其他部分访问它,或者它是有限的?在node.js javascript中定义作用域的逻辑是什么?如果使用var,则在方法中定义的任何变量仅在该方法中可用。如果你这样做 myVar=1 myVar将是全球性的 节点与其他javascript类似。Node确实定义了一个全局变量,所以您可以执行以下操作 global.SOME_CONSTANT='A CONSTANT' 然后像这样使用它 某些常量 代码/

如果我在传递的函数中定义了一些东西,例如

var name=“无论什么”


现在是否可以从应用程序的其他部分访问它,或者它是有限的?在node.js javascript中定义作用域的逻辑是什么?

如果使用
var
,则在方法中定义的任何变量仅在该方法中可用。如果你这样做

myVar=1

myVar将是全球性的

节点与其他javascript类似。Node确实定义了一个
全局
变量,所以您可以执行以下操作

global.SOME_CONSTANT='A CONSTANT'

然后像这样使用它

某些常量

代码/模块中的任意位置

因为节点是异步的,所以最终会定义大量回调。i、 你做了很多事情

someModule.someMethod(opts, function(data){
   // callback code in here
});
您传入的函数在完成时被
someMethod
调用。假设您在函数中调用了
someModule.someMethod
。如果您在该外部函数中定义了一个变量,那么您的代码如下所示

var x = [];
someModule.someMethod(opts, function(data){
   // x is available in this callback because of closures, so you can do
   x.push(data);
});

由于闭包,在外部范围中定义的变量在回调中可用。我建议您花一些时间阅读javascript中的闭包。

变量
name
仅在创建它的函数中可用,或在该函数中嵌套的函数中可用


无论函数在何处传递,这都是正确的。无论它走到哪里,它的原始变量环境都会随身携带,并且该环境之外的任何代码都无法访问
名称

它仅在模块中可用,并且仅在定义的函数中可用。 没有办法定义范围。每个模块都有自己的全局范围

您应该了解闭包;)