引数として関数を受け取る関数を持つサードパーティライブラリを使用しています。特定の関数をパラメーターとして追加するかどうかを決定するために、いくつかの条件付きチェックを行っていますが、関数を提供したくない場合もあります。その場合にnullを指定すると、エラーがスローされます。
動作するこのコードを見つけましたが、何が起きているのか完全にはわかりません。
compose(__DEV__ ? devTools() : f => f)
f => f
は() => {}
と同等ですか?空の匿名関数ですか?
f => f
はfunction(f){ return f; }
に似ています*
とても近いですが、あなたが期待したほどではありません。
*-コメントで指摘されているように、微妙な違いがありますが、あなたの質問のために、それらは特にに関連するとは思いません。それらは他の状況に非常に関連しています。
f => f
は identity関数 です。渡された引数を返すだけです。
この関数は、変換を実行しないため、変換プロセスのデフォルト値としてよく使用されます。
f => f
は() => {}
と同等ですか?空の匿名関数ですか?
いいえ。空の関数は何も返しません。識別関数は、渡された引数を返します。
f => f
の意味を知りたい場合は、左側がパラメーターで、右側が戻り値です。たとえば、f => f*2
は次と同等です。
function(f) {
return f * 2;
}
記述したコードは、入力として提供されたものをすべて返します。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
f => f
が何をするかについては既に言及しているので、これ以上深くは述べません。 f => f
と__DEV__ ? devTools() : f => f
には少し違いがあるので、関数の残りの部分を説明するだけです。
三項演算子は、__DEV__
が真の値であるかどうかをチェックし、そうである場合は、関数devTools()
を返します。それ以外の場合は、何もしない識別関数f => f
を返します。言い換えると、このコードはいくつかの開発モード機能を有効にします。残りのコードがないと、このモードが何を追加するのかを判断するのは困難ですが、おそらく、追加のロギング情報が有効になり、難読化が少なくなるでしょう。