2016-08-23 54 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版本的胜利。