2015-05-01 106 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()虽然对读者更友好。

那么什么是真正的更好是见仁见智的问题,但我要说的性能安全一起超过可读性,所以我更喜欢!!

相关问题