Myfunc=_emptyFunc vs Myfunc=null

Myfunc=_emptyFunc vs Myfunc=null

本文关键字:Myfunc null vs emptyFunc      更新时间:2023-09-26

如果我想释放一个名为Myfunc
的函数完成此类任务的最佳方法是什么?
_emptyFunc=function(){}

_emptyFunc在调用null抛出TypeError时是可调用的:

js> _emptyFunc=function(){}
(function () {})
js> _nullFunc=null;
null
js> _emptyFunc()
js> _nullFunc()
typein:5: TypeError: _nullFunc is not a function

因此,使用 no-op 函数的优点是,您可以简单地无条件调用它,而不必检查它是否不是 null/undefined,甚至可能测试它是否是可调用的。

使用 nullundefined 的优点是,代码可以避免仅在传递回调时才需要执行的操作。

如果您实际上计划允许 JS 引擎释放之前存储在变量中的任何函数使用的内存,请将其设置为 null 。分配不同的函数也会删除(可能)对该函数的最后一个引用,从而允许 GC 收集它,但你会有一个显然也会使用一些内存的新函数。

将 MyFunc 设置为 null,这将导致 GC 收集函数对象(如果没有更多可访问的引用)。一般来说,你不需要做这样的事情。

  1. 第一个是可调用的
  2. 第二个将导致类型错误异常。

希望有帮助。