私はビットOCDを取得し、これを取り除きたいよ:Javascriptに重複宣言の最適化はありますか?
const idSet = new Set(ids)
私は唯一のパラメータとして2つの異なる機能にそれを渡すためにそれを使用します。
new Set(ids)
を2回呼び出せるようにしたいが、V8エンジン(Node.jsのコードを実行している)がこれを最適化するかどうかはわからない。それはただ1つのSetを作成する必要があります(Setを渡す関数もSetを変更しないようにする必要があります)。
a)の最適化が起こるんか。 b)実際に起こったことをチェックするために人々が何をするか(好奇心から)。
おかげ
編集:私は以上の騒ぎだったもの
:
// I wanted to change something like this:
const idSet = new Set(ids)
const r1 = fn1(idSet)
const r2 = fn2(idSet)
// to this:
const r1 = fn1(new Set(ids))
const r2 = fn2(new Set(ids))
を今、私はそれについて考える、おそらくこのような何かをして、いくつかの高次機能のパターンがあります(または、私は1つ書くことができる...しかし、それは少ないコードの本来の目的を破るだろう):
const [r1, r2] = hof([fn1, fn2], new Set(ids))
さらに正当化:ids
は配列です。私はそれをfn1
とfn2
のセットにする必要があったが、呼び出しコードはそれをセットにする必要はなく、余分な変数を必要としない。idSet
は、ids
しか使用していないときに横たわっていた。ランタイムは2つの別個のセットを作成します...それは無駄ですので、それはそのままです。
私はそれを取得しません。なぜ2つのセットを作成したいが、1つのセットだけを作成したいのですか? – Bergi
私は参照してください。ローカル変数を恐れないで安価で分かりやすくする:-)グローバルスコープの場合は、次のようにIIFEを使います: 'const [r1、r2] =(idSet => [fn1(idSet)、fn2(idSet )]))(新しいSet(ids)); ' – Bergi