获取表达式的布尔值的最佳方法是什么?

时间:2015-05-01 13:49:53

标签: javascript

获取表达式布尔值的最佳方法是什么?

我通常使用!!,想知道是否有任何理由将其用于布尔值,或者是否可以使用其中任何一个。

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

2 个答案:

答案 0 :(得分:2)

两者通常都这样做。它们在以下几点有所不同:

  • !!只有两个要输入的字符
  • Boolean是明确的,即使是那些不了解" !! operator"
  • 的人也可以理解
  • Boolean可能会被覆盖,而!!始终是安全的
  • !!似乎是better optimised

所以要更好地使用你喜欢的任何东西。

答案 1 :(得分:1)

我在Safari(8.0.5),Chrome(42.0.2311.90),Firefox(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);

无论我在使用a还是!!之前设置了Boolean,在所有浏览器!!中都更快。

除此之外(正如 Bergi 在答案中已经说过的那样),Boolean只是一个必须解决并且可以被覆盖的变量,而!!不能是

Boolean()更易于读者阅读。

所以实际上更好是一个意见问题,但我会说性能安全性一起超过可读性,所以我更喜欢!!