Node.js 节点-查找任意变量的值

Node.js 节点-查找任意变量的值,node.js,Node.js,以这段代码为例: (() => { const data = [] const ws = new WebSocket('ws:/localhost:5555'); ws.onmessage = (frame) => data.push(frame.data); })(); 是否可以在不停止应用程序或中断onmessage并等待其发生的情况下查找数据的值?是否可以只查找我知道要永久存储在某个位置的任何变量的值?函数中的变量是该函数范围内的私有变量。只有该函数范

以这段代码为例:

(() => {
    const data = []
    const ws = new WebSocket('ws:/localhost:5555');
    ws.onmessage = (frame) => data.push(frame.data);
})();

是否可以在不停止应用程序或中断
onmessage
并等待其发生的情况下查找
数据的值?是否可以只查找我知道要永久存储在某个位置的任何变量的值?

函数中的变量是该函数范围内的私有变量。只有该函数范围内的代码才能检查它们

如果您在调试器中,则需要在该函数范围内的断点处才能看到该变量

有时,将变量的声明移动到更高的范围是合适的,这样在某个局部范围内修改后,它的值将保持不变,并且可以从更高的范围访问它。我不知道你想解决的真正问题是什么,我想知道这对你的处境是否有意义


更可能的情况是,由于变量(如
数据
变量)在未知时间被修改,一些外部代码知道何时查看更新值的唯一方法是参与某种事件系统或回调系统,通知外部它现在有一个新值。在这种情况下,通常只将新值传递给回调或与事件一起传递。然后外部代码以这种方式获取值,而不必在某个父范围内声明它。

是,只要您在正确的范围内。你为什么要把它包装在生活中?如果需要使用IIFE,可以向它传递一个参数,在包含范围内的声明变量中对其进行变异或设置值。IIFE用于在函数声明之后立即执行函数(无需显式调用)。上面的代码中RAM中没有持久对象<代码>数据
将在IIFE被调用后立即被垃圾收集(不一定是立即的,但可能是立即的,我想说的是
数据
在这个代码中是临时的)@slebetman-这不一定是真的,因为
ws.onmessage
仍然是活动的,在IIFE运行并引用
数据之后很久。因此,仍然存在活动引用,因此只要这些引用保持活动状态,
数据将不会被GCed。@jfriend00 Ah。不知道我怎么会错过。在这种情况下,无法对上述代码执行此操作,也不应该执行此操作,否则将破坏闭包提供的范围保护(是的,我知道您可以调试解释器并在C级别找到它,但在js级别不可能)