Myfunc=_emptyFunc vs Myfunc=null

3

如果我想发布一个名为Myfunc的函数,最好的方法是什么?
_emptyFunc=function () {}


3
“发布”一个函数是什么意思?你是想删除它吗? - lanzz
3个回答

1
  1. 第一个可以被调用
  2. 第二个会导致 TypeError 异常。

希望这有所帮助。


1
将MyFunc设置为null,这将导致GC在没有更多可访问的引用时收集Function对象。通常情况下,您不需要这样做。

1

_emptyFunc 可被调用,而调用 null 会抛出 TypeError 异常:

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

因此,使用无操作函数的优点是您可以无条件地调用它,而无需检查它是否为null/undefined,甚至可能测试它是否为可调用的内容。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接