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

标签 node.js variables tracking

我对 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/

相关文章:

javascript - 为变量内的函数设置 boolean 值

javascript - 用户导航到网站的另一个页面后是否可以保持 AJAX 请求处于事件状态?

jquery - Google Analytics 和 jQuery fullpage.js

iOS - 如何在 AppsFlyer 的 One-Link 中获取参数。应用已安装并启动

node.js + postgres : Syntax error at or near "$1"

node.js - 为什么我的 .travis.yml 文件被忽略?

node.js - 部署到 Heroku 错误 : Cannot find module '/app/server.js'

python - 类外的变量范围

node.js - 在nodejs Cluster Master中创建资源: good or bad?

java - 用于跟踪网页浏览量(或唯一访问者)的最佳 Grails 实现?