如何查看已启动的node.js变量?

时间:2015-09-29 16:00:46

标签: node.js variables tracking

我对node.js很陌生,我想知道:看到创建的任何变量的范围被设置为某种全局范围,有没有办法列出已经启动的变量名称? / p>

1 个答案:

答案 0 :(得分:2)

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-inspector的调试器来查看在任何给定范围内声明的所有变量。您在该范围内设置断点,然后查看该断点处的局部变量。