2013-03-16 120 views
7

我注意到Closure Compiler編譯true和false(或者1和0)爲!0和!1。這對我來說沒有意義,因爲它的字符數是1和0的兩倍。是否有這個原因?有什麼好處嗎?Is!0和!1比1和0好嗎?

謝謝。

回答

10

1 !== true0 !== false,但!0 === true!1 === false。編譯器只是確保類型保持布爾型。如果更改第一行var a = 1;第一條件將被虛假和第二真實

var a = true; 

if(a === true) { 
    console.log('True!'); 
} 

if(a === 1) { 
    console.log('You should never see this.'); 
} 

考慮這個例子。使用var a = !0;腳本仍然可以正常工作。

+0

'!0'具有節省2個字符的額外好處,在縮小過程中'!1'具有節省3的額外好處。方式過度優化,但如果一臺機器正在進行優化,誰在乎。 – Norguard 2013-03-16 07:37:05

+0

有趣,謝謝! – Suffick 2013-03-16 07:41:05