在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
仅在创建它的函数中可用,或在该函数中嵌套的函数中可用
无论函数在何处传递,这都是正确的。无论它走到哪里,它的原始变量环境都会随身携带,并且该环境之外的任何代码都无法访问名称它仅在模块中可用,并且仅在定义的函数中可用。
没有办法定义范围。每个模块都有自己的全局范围
您应该了解闭包;)