比较Javascript值的最佳做法是什么?

lva*_*yut 3 javascript

通常,我通过简单地将它放在if语句中来比较一个布尔值,如下所示:

var foo = 'Foo data';
if ( foo ) {
    // Do somethings
}
Run Code Online (Sandbox Code Playgroud)

最近,我刚看到一些人在比较之前将变量转换为boolean:

if ( !!foo ) { 
    // Do somethings
}
Run Code Online (Sandbox Code Playgroud)

在性能或优势方面有什么不同吗?哪个更优选?

Sco*_*tux 7

相比之下,没有功能上的差异,正如在这个小提琴http://jsfiddle.net/aeujgovd/1中看到的那样

if(foo){}
if(!!foo){}
Run Code Online (Sandbox Code Playgroud)

使用的唯一理由!! 例如,如果您的API期望一个正确的布尔值而不是像0或1这样的标志,则从truthy/falsey值强制一个布尔值.

var myObj = {flag: 0};
function submitObj(myObj){
    myObj.flag = !!myObj.flag;
    // ... Ajax submit
}
Run Code Online (Sandbox Code Playgroud)