jQuery 1.4 に関するリリース ノートを調べたところ、次のような$.noop()
ものに出会いました。
説明: 空の関数。(1.4で追加)
何もしない関数を渡したい場合は、この空の関数を使用できます。
おそらく、ここで何か重大なことが抜け落ちているのでしょうが、空の関数を渡すことの実用的な用途とは正確には何なのでしょうか?
コード例を高く評価しました。
jQuery 1.4 に関するリリース ノートを調べたところ、次のような$.noop()
ものに出会いました。
説明: 空の関数。(1.4で追加)
何もしない関数を渡したい場合は、この空の関数を使用できます。
おそらく、ここで何か重大なことが抜け落ちているのでしょうが、空の関数を渡すことの実用的な用途とは正確には何なのでしょうか?
コード例を高く評価しました。
関数をパラメーターとして受け入れる関数があり、それを指定するコードがない場合は、 を渡すことができます$.noop
。
ただし、そもそもパラメーターがオプションではないjQueryのようなケースは考えられません。
書き込みとは異なりfunction(){}
、渡し$.noop
ても新しい関数インスタンスは作成されず、メモリが少し節約されます。ただし、関数オブジェクトを変更するもの (たとえば、funcParam.id = 2
) を渡す場合は、渡すと問題$.noop
が発生します。
実世界の例(ほぼ):
jQuery.fn.myAwesomeAjax = function(url, complete) {
return jQuery.ajax(url || this.url)
.complete(complete || jQuery.noop);
};
代わりに使用してくださいfunction (){}
おそらく、いくつかの悪い API がパラメーターとして関数を必要とし、その中で何もしたくない場合、これはそれを明らかにするフレームワークでサポートされている方法です。
コールバックを必要とするいくつかのプラグインを使用していますが、特定のコールバックを実際に使用したくない部分もあります。そこで、function() {} を入れました。
noop は jQuery ソースで次のように定義されています。
noop: function() {}
したがって、上記の例のように、空の関数を使用する場所ならどこにでも収まります。
唯一の論理的な理由は、何かを実行し、別の関数を呼び出す関数を呼び出しており、パラメーター関数を呼び出さずに上位レベルの関数にそのことを実行させたい場合です。
ほとんどの jQuery 関数はオプションでパラメーター関数を受け取るため、パラメーター関数を渡す必要はありません。そうでない関数が 1 つか 2 つあるかもしれません。あるいは、このような動作をするカスタム コードで開発者を支援するためかもしれません。
関数が引数として関数を渡す必要がある場合は、おそらく?do_something($.noop)
より言うと短いdo_something(function(){})
です。
それほどではありませんが...
...6文字...
...ええ、その機能は実際にはかなり役に立たないようです。
これは純粋に、コールバックが必要な場所での利便性/代替手段ですfunction(){}
。すぐに使用することはないと思います。
jQuery チームがそれを落とし込んだとき、かなり笑ったに違いありませんが、コメディーの目的も果たします。
関数を他の関数に提供する関数がある場合に役立ちます。
例: データのリストがあります。各アイテムには、何かを行うボタンがあります。「何か」はアイテムごとに異なります。アイテムを取り込んで関数を返す「FunctionFactory」があります。なんらかの理由でボタンに何かをさせたくない場合、最もクリーンな方法は空の関数を返すことです。これにより、ファクトリが常に関数を返すことがわかっているためです。
jQuery の具体的な例はありませんが、これは .each または .map ブロックで使用すると便利になると思います。