【问题标题】:Typescript functions that returns data返回数据的打字稿函数
【发布时间】:2018-04-16 22:06:58
【问题描述】:

一个普遍的好奇问题。假设我们有一个返回对象数据的 Typescript 函数。

public abc(): data {
   let data: object = { ... }
   ...
   ...
   return data;
}

我们调用函数

abc();

但是函数 abc() 返回 data。是否存在内存泄漏或其他问题,因为没有变量来保存返回的数据,例如let saveThisData = abc();

【问题讨论】:

标签: typescript


【解决方案1】:

没有内存泄漏。因为abc()的返回值没有被引用,所以会被垃圾回收。

TypeScript 不会改变 JavaScript 的这种行为,因为 TypeScript 的返回类型只是描述了编译时类型检查器返回的内容。

【讨论】:

  • 谢谢,有助于理解!
【解决方案2】:

没有内存泄漏。下次垃圾收集器执行时,它会看到没有当前引用(全局范围内的变量),您可以从中访问定义为data 的内容,因此该对象将被释放。

其实,如果你把它赋值给一个常量:

const data = abc();

如果您在块或函数中执行此操作,则将是相同的。一旦该块或函数超出范围,将不会引用该对象,因此,它会再次被释放。

当然,如果您在全局范围内执行该语句,那么 data 将成为根引用,因此在程序完成之前不会释放对象(发生这种情况时,取决于执行的上下文-- 节点、浏览器 ...)

【讨论】:

  • 谢谢,有助于理解!
猜你喜欢
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 2015-08-10
  • 2019-10-12
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
相关资源
最近更新 更多