2016-08-23 52 views
0

例子:Closure編譯器爲什麼贊成!0代替true?

var formatDate = function(d) { 
    return dateFormat(d, "yyyy-mm-dd HH:MM:ss", true); 
} 

被編譯爲:

var formatDate = function(a) { 
    return dateFormat(a, "yyyy-mm-dd HH:MM:ss", !0); 
}; 

0感覺就像在地方一個Javascript基本的邏輯運算,從而直觀地似乎應該更貴。這不是這種情況嗎?爲什麼不?

+3

因爲它縮短了兩個字符。 – Bergi

+3

在這種情況下,運行時可以將'!0'視爲與'true'完全等價;換句話說,一旦代碼實際運行,字面意義不大,在此之前它可以節省2個字符。 – Pointy

回答

1

Gzip壓縮被發現更好。 Closure編譯器使用啓發式方法嘗試生成將gzip儘可能小的文件。

注意:在某些情況下,這會使非gzip文件變大。在這個特定的情況下,它是原始文件和gzip版本的勝利。