获取表达式布尔值的最佳方法是什么?
我通常使用!!
,想知道是否有任何理由将其用于布尔值,或者是否可以使用其中任何一个。
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
答案 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()
更易于读者阅读。
所以实际上更好是一个意见问题,但我会说性能和安全性一起超过可读性,所以我更喜欢!!
。