3

という関数をリリースしたい場合、Myfunc
そのようなタスクを達成するための最良の方法は何ですか?
_emptyFunc=function(){}

4

3 に答える 3

1

MyFuncをnullに設定すると、アクセス可能な参照がなくなった場合にGCがFunctionオブジェクトを収集します。通常、そのようなことをする必要はありません。

于 2012-05-28T10:15:34.680 に答える
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/未定義ではないかどうかを確認したり、呼び出し可能なものであるかどうかをテストしたりする必要がなく、無条件に呼び出すことができるという利点があります。

nullorを使用undefinedすると、コールバックが渡されたときにのみ必要な処理をコードで回避できるという利点があります。

以前に変数に格納された関数によって使用されたメモリを JS エンジンが解放することを実際に許可する場合は、それを に設定しnullます。別の関数を割り当てると、関数への(おそらく)最後の参照も削除されるため、GC がそれを収集できるようになりますが、明らかにメモリを使用する新しい関数も作成されます。

于 2012-05-28T10:14:42.247 に答える
1
  1. 最初のものは呼び出し可能です
  2. 2 番目のものは TypeError 例外を引き起こします。

それが役立つことを願っています。

于 2012-05-28T10:11:20.330 に答える