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つを渡す必要はありません。そうでない場合は1つまたは2つある可能性があります。または、このように動作するカスタムコードで開発者を支援することもできます。
関数が引数として関数を渡す必要がある場合はどうでしょうか? do_something($.noop)
よりもdo_something(function(){})
の方が短いです。
それほどではありませんが...
... 6文字...
...ええ、その機能は実際にはまったく役に立たないようです。
これは、コールバックが必要な場合のコンテキストでのfunction(){}
の純粋な便利/代替です-すぐに使用するつもりはないと思います。
JQueryチームがそれを投入したときはかなり笑いましたが、喜劇の目的にも役立ちます。
他の関数に関数を提供する関数がある場合に役立ちます。
例:データのリストがあります。各アイテムには、何かを行うボタンがあります。 「何か」はアイテムごとに異なる場合があります。アイテムを受け取って関数を返す「FunctionFactory」があります。何らかの理由でボタンに何かをさせたくない場合は、空の関数を返すのが最もクリーンな方法です。これにより、ファクトリは常に関数を返すことがわかります。
JQueryの具体的な例はありませんが、.eachブロックまたは.mapブロックで使用すると便利な場合があります。