誰かは最近、これが悪いと言ってくれました自動的に最適化されませんか? Javaや他の言語では、私はと思うのですが、コンパイラーはキャッシング自体を実行するほどスマートです。変数のキャッシングは
はすなわち、この:
// myList is a List<String>
String str = myList.get(0);
String trimmed = str.trim();
String sub = str.substring(0, 5);
boolean abc = str.startsWith("abc");
がこれよりも何より効率的ではありません:
String trimmed = myList.get(0).trim();
String sub = myList.get(0).substring(0, 5);
boolean abc = myList.get(0).startsWith("abc");
コンパイラについての詳細を知っている誰も私にここにいくつかの洞察力を与えることはできますか? JavaScriptはそんなに愚かなのですか?それとも、Java /その他にも当てはまりますか?
コンパイラは、関数を推測するのに十分な情報を純粋であるかもしれませんが(それに加えて、DOMに依存しないので、呼び出しの間にDOM操作が起こらないことなど、それは手を出ている)、実際にそれを試みる人はほとんどいません。 Javaコンパイラは意図的に愚かであり、JITコンパイラ(JavaとJSの両方)はコンパイル時により制約されます。彼らは通常、多くの分析を必要としない、最も有益な最適化に固執しています(例えば、仮想コールを投機的に取り除く、JSはいくつかの変数に静的タイプを仮定します)。 – delnan
簡潔さを心配している場合は、jquery: '$("#myID ")の構文的な砂糖を使用してください。addClass(" a ")addClass(" b ")。addClass(" c ");' Soあなたのコードはこの変数を維持する必要はなく、より速くスコープから外れます。 –
@bertはい、明らかに...それは単なるおもちゃの例でした。 –