【问题标题】:Deleting variable from memory node.JS从内存node.JS中删除变量
【发布时间】:2020-11-30 10:09:31
【问题描述】:

我知道,例如,c++ 有类似delete variable 的东西,它将从内存中删除。 JS中有这样的东西吗? 例如,我有var canSendRequest = true;,经过一些操作后,我想将它从内存中完全删除。正如我所读到的,delete canSendRequest 将无法正常工作,但我没有设法找到一种正常工作的方式。有人知道,该怎么做吗?

【问题讨论】:

  • JavaScript 被垃圾回收。如果没有对变量的引用,它将自行消失。
  • 正如 Barmar 所提到的,与其他编程语言一样,有垃圾收集器,因此任何不再使用的变量都会被收集。如果你想主动这样做,你可以给它undefined(或null)值myVar = undefined
  • delete canSendRequest 将从当前上下文中删除变量。 “无法正常工作”是什么意思?
  • 这能回答你的问题吗? Memory release from local variable in JavaScript
  • @F.Igor:不会。这不是 delete 在 JS 中所做的。在某些情况下它有点适用于全局变量,但仅此而已。

标签: javascript node.js memory memory-management


【解决方案1】:

Var 是 Hoisting 类型,使用 let 或 const。喜欢var g_a = 1; //create with var, g_a is a variable delete g_a; //return false console.log(g_a); //g_a is still 1

现在试试 let 和 const

【讨论】:

  • letconst 也被“提升”了,delete 运算符不是为了删除变量,“g_a 仍然是 1”但是什么声明您将在此处使用的类型。
【解决方案2】:

由于 JS 是垃圾回收,因此您无法直接控制内存的释放。

您只需要等待运行时释放内存,如果没有通过全局对象或永久存在的闭包对其进行永久引用。在这些情况下,您需要消除对变量的此类引用,以使其有资格被释放。

如果你说你想从作用域中删除标识符本身,你肯定不能,除非它是一个被设置为全局对象属性的全局变量,而不是使用正确的变量声明语法。

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多