在Javascript中(当使用node.js时),你如何知道/定义变量的作用域?

In Javascript (when using node.js), how do you know/define the scope of variables?

本文关键字:何知道 定义 变量 作用域 Javascript js node      更新时间:2023-09-26

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

var name = "Whatever";

现在是否可以从应用程序的其他部分访问,还是受到限制?在node.js中定义作用域的逻辑是什么?

name变量只在创建它的函数中可用,或者在该函数内嵌套的函数中可用。

无论函数传递到哪里,这都是正确的。它的原始变量环境随身携带,任何代码以外的环境将无法访问name

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

myVar = 1;

myVar将是全局的

Node和其他javascript一样。Node确实定义了一个global变量,因此您可以执行以下操作:

global.SOME_CONSTANT = 'A Constant'

然后像

一样使用

SOME_CONSTANT

在你的代码/模块的任何地方。

因为node是异步的,所以最终需要定义很多回调。也就是说,你做了很多

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中的闭包。

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

你应该阅读闭包;)

相关文章: