一个普遍好奇的问题。假设我们有一个返回对象数据的Typescript函数。
public abc(): data {
let data: object = { ... }
...
...
return data;
}
我们用
调用该函数abc();
但是函数abc()返回data
。是否有内存泄漏或其他因为没有变量来保存返回的数据,如let saveThisData = abc();
答案 0 :(得分:2)
没有内存泄漏。由于未引用abc()
的返回值,因此将进行垃圾回收。
TypeScript不会从JavaScript更改此行为的任何内容,因为TypeScript的返回类型仅描述为编译时类型检查器返回的内容。
答案 1 :(得分:1)
没有内存泄漏。下一次垃圾收集器执行时,它将看到没有当前引用(全局范围中的变量),您可以从中获得定义为data
的内容,因此将丢弃该对象。 / p>
事实上,如果你将它分配给常数:
const data = abc();
如果您在块或函数中执行此操作,将是相同的。一旦该块或函数超出范围,就不会引用该对象,因此,它将再次被处理。
当然,如果您在全局范围内执行该语句,那么data
将成为根引用,因此在程序完成之前不会释放该对象(当发生这种情况时,取决于上下文执行 - 节点,浏览器......)