我对 Node.js 还很陌生,我想知道:既然创建的任何变量的范围都设置为某种全局范围,有没有办法列出已经启动的变量名称?
最佳答案
node.js 变量通常不是全局的。默认情况下,在模块顶层声明的任何变量仅在模块范围内,不会与任何其他模块冲突或干扰。
只有显式分配给 global
对象的变量才真正全局可用。
global.myVar = "foo";
所有其他都包含在较小的范围内 - 模块范围或模块内的函数范围。
所以,如果您有这样的模块:
var x = 3;
module.exports = function() {
return x;
}
那么,变量x
根本就不是全局变量。它包含在本模块的范围内。它不会与任何其他同名模块中的变量冲突。
因为模块中的顶级变量实际上是模块函数包装器中的局部变量,并且 Javascript 不提供任何迭代函数范围内的局部变量的方法,所以无法迭代模块范围内的所有顶级变量。
如果您希望能够在某些上下文中迭代所有变量,那么您可以使用不同的格式并将它们作为对象的属性。
var obj = {};
obj.x = 3;
obj.y = 5;
// list all enumerable properties of obj
for (var prop in obj) {
console.log("property: " + prop + " = ", + obj[prop]);
}
<小时/>
仅供引用,您还可以使用像 Node 检查器这样的调试器来查看任何给定范围内声明的所有变量。您在该范围内设置一个断点,然后查看该断点处存在的局部变量。
关于node.js - 如何查看已启动的 Node.js 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848693/