I've seen the Google Closure compiler do a lot of rewriting in if-clauses. For example:
if (a === 3) {…}
turns to
if (3 === a) {…}
Are comparisons faster in JavaScript, if the primitive is the first argument, or what is the reason for this?
From 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.
*
*/
As stated by a google closure compiler contributor , the compression the code comments are referring to means gzip compression, not the actual minification "compression". The reason it can improve gzip compression is that if you have 0 === x
and x === 0
in your code, the closure compiler normalizes both of these to 0 === x
, which is duplicated text and thus compresses better.
Then there is also:
typeof this.value == "object"
typeof this.key == "object"
The unique strings are: typeof this.
, value
, key
and == "object"
But if you reorder:
"object" == typeof this.value
"object" == typeof this.key
The unique strings are: "object" == typeof this.
, value
and key
. Less unique strings and quite a long duplicate one.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.