2015-05-01 151 views
1

獲得表達式布爾值的最佳方法是什麼?獲得表達式布爾值的最佳方法是什麼?

我通常使用!!,想知道是否有任何理由使用它來布爾或者是否可以使用其中任何一個。

someFunction: function(param){ 
    var myBoolean = !!param; 
} 

但我也可以這樣做:

someFunction: function(param){ 
    var myBoolean = Boolean(expression); 
} 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean

+1

我認爲它就像'Number(value)'vs'+ value'。一個被認爲更容易閱讀,另一個更快。 – Lewis

回答

2

都做同樣的通常。它們之間的區別主要有以下幾點:

  • !!只有兩個字符鍵入
  • Boolean是明確的,甚至可以通過人誰不知道「!! operator
  • Boolean可能會被覆蓋理解,而!!始終是安全
  • !!似乎better optimised

因此使用你喜歡的任何東西。

1

我嘗試以下片段在Safari(8.0.5),鉻(42.0.2311.90),火狐(34.0.5)和Opera的控制檯(29.0.1795.47):

隨着!!

var time = new Date().getTime(); 
for(var i = 0; i < 1000000; i++) 
{ 
    var a = true; 
    a = !!a; 
} 
time = new Date().getTime() - time; 
console.log(time); 

隨着Boolean()

var time = new Date().getTime(); 
for(var i = 0; i < 1000000; i++) 
{ 
    var a = true; 
    a = Boolean(a); 
} 
time = new Date().getTime() - time; 
console.log(time); 

無論我在人用!!Boolean,之前設置a到升瀏覽器!!更快。

除了這個(如BERGI在他的回答已經說過),Boolean就是一個必須解決,可以被覆蓋,而!!不能是一個變量。

Boolean()雖然對讀者更友好。

那麼什麼是真正的更好是見仁見智的問題,但我要說的性能安全一起超過可讀性,所以我更喜歡!!

相關問題