首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在词法作用域末尾设置'var = null‘很重要吗?

在词法作用域末尾设置'var = null‘很重要吗?
EN

Stack Overflow用户
提问于 2022-01-06 05:55:39
回答 1查看 43关注 0票数 0

我读到的这个职位几乎澄清了有关作用域的所有内容,只留下了这样的疑问:

如果词法作用域在每次运行时生成一个新环境并存储它们的信息,那么在代码频繁运行的环境中,您需要在作用域的末尾声明var_of_scope = null以释放内存,如果没有引用环境的元素,则JavaScript会自动识别这一点?

EN

回答 1

Stack Overflow用户

发布于 2022-01-06 06:07:48

不,那几乎是不必要的。

Javascript使用垃圾收集。当任何作用域中没有值引用存储在内存中的值时,它将在下一次垃圾回收器运行期间被移除。

在你所描述的情况下:

代码语言:javascript
运行
复制
function foo() {
  let data = "some data here"
  // do stuff with data
  data = null
}

在这里设置null是没有帮助的。它确实删除了data的前一个值的所有引用,但是由于作用域将在函数结束时结束,所以所有局部变量都会随之被丢弃。

实际上,这将阻止您使用const关键字,这是非常好的使用。默认情况下,所有变量都应该是const,只有在初始化后确实需要分配变量时,才应该将它们更改为let

这样做更好:

代码语言:javascript
运行
复制
function foo() {
  const data = "some data here"
  // do stuff with data
}

一般来说,你不用担心这件事。在javascript中泄漏内存是不容易的,就像在C. 这是有可能的这样的语言中那样,但是只要您遵循下面的大多数最佳实践,您可能会很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70603083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档