GoogleClosureコンパイラがif句で多くの書き換えを行うのを見てきました。例えば:
if (a === 3) {…}
に変わります
if (3 === a) {…}
プリミティブが最初の引数である場合、JavaScriptでの比較は高速ですか、それともその理由は何ですか?
GoogleClosureコンパイラがif句で多くの書き換えを行うのを見てきました。例えば:
if (a === 3) {…}
に変わります
if (3 === a) {…}
プリミティブが最初の引数である場合、JavaScriptでの比較は高速ですか、それともその理由は何ですか?
ReorderConstantExpression.javaから:
/**
* Reorder constant expression hoping for a better compression.
* ex. x === 0 -> 0 === x
* After reordering, expressions like 0 === x and 0 === y may have higher
* compression together than their original counterparts.
*
*/
Googleクロージャーコンパイラの寄稿者が述べたように、コードコメントが参照している圧縮は、実際の縮小「圧縮」ではなく、gzip圧縮を意味します。gzip 圧縮を改善できる理由は、コードに0 === x
とがある場合x === 0
、クロージャ コンパイラがこれらの両方を に正規化する0 === x
ためです。
次に、次もあります。
typeof this.value == "object"
typeof this.key == "object"
一意の文字列は次のとおりです: typeof this.
、value
、key
および== "object"
しかし、並べ替えた場合:
"object" == typeof this.value
"object" == typeof this.key
一意の文字列は"object" == typeof this.
、 、value
およびkey
です。一意の文字列が少なく、重複する文字列がかなり長くなります。