var foo = "bar";
if (foo) {
console.log(foo);
}
var foo = "bar";
if (!!foo) {
console.log(foo);
}

我应该使用哪一个?
性能方面两种方式看起来都一样。
答案 0 :(得分:1)
第一个。第二个不好读,我看不出它的明显用途。
答案 1 :(得分:0)
!!
不是
在if()内部都是有效的,第二个只是迫使它成为一个bool值,但实际上并不需要。所以请选择if (foo)
var foo = "bar";
var myvar = foo;
var myvar2 = !!foo;
console.log("myvar-->" + myvar);
console.log("myvar2-->" + myvar2);
了解有关JS truthy-falsey的更多信息:https://j11y.io/javascript/truthy-falsey/
答案 2 :(得分:0)
使用!! foo在第二个块中添加条件,需要更多时间。 基本上,如果你运行数千次与boucle相同的话,你会看到第一个具有最佳性能
示例:
var foo = "bar";
var n = new Date().getMilliseconds();
for (i=0;i<5;i++){
if (foo) {console.log(foo);}
}
var n2 = new Date().getMilliseconds();
var elasped_time = n2-n;
console.log(elasped_time);
答案 3 :(得分:0)
如果您只想检查字符串foo中值的可用性,请使用
var foo = "bar";
if (foo) {
}
但这不是检查空字符串的最佳方法。