在if语句中使用Not Not的任何目的

时间:2015-10-13 09:13:00

标签: javascript if-statement expression

我见过使用

编写的JS代码
if(!!a){
 //something here
 console.log('something');
}

我不明白这样做的偏好是什么:

if(a){
//something else here
 console.log('something else here');
}

使用JS在表达式中键入!!可以获得任何收益吗?

3 个答案:

答案 0 :(得分:2)

关于truthy and falsy

  

JavaScript中的所有内容通常都具有固有的布尔值   被称为truthy或falsy。

     

以下值始终是假的:

     
      
  •   
  • 0
  •   
  • “”
  •   
  •   
  • 未定义
  •   
  • 的NaN
  •   
     

所有其他值都是真实的,包括“0”(引号为零),“false”   (引号中为false),空函数,空数组和空对象。

在你的情况下,我认为它没有用,因为if (0) { // this will never be executed } 已经使用条件的真值/假值:

!!

return !!myObject.length; // returns true if myObject.length > 0, false otherwise 可以像这样使用:

build.gradle

答案 1 :(得分:2)

if语句检查传递给它的表达式的真实性。 !!将真实性强制转换为布尔值。因此:

if (!!a) {}

与:

完全相同
if (a) {}

使用没有任何好处!在这种情况下

这强烈反映了货物崇拜节目或影响另一种语言。

答案 2 :(得分:0)

要了解一些样本:

var el = document.getElementById('el');
var log = function(val){ 
//  el.innerHTLM+='<div><pre>' + JSON.stringify(val , null , ' ') +'<\pre></div>';
  el.innerHTML+='<div><pre>' + val  +'<\pre></div>';

};

var a = 'Helo';

log('a = ' +  a);
log('! a = ' +  ! a);
log(' !! a = ' + !!a );
log('---');
log('true =' + true);
log('!true =' + !true);
log('!!true =' + !!true);
log('---');
log('false =' + false);
log('!false =' + !false);
log('!!false =' + !!false);
log('---');
log('null =' + null);
log('!null =' + !null);
log('!!null =' + !!null);
log('---')
log('undefined =' + undefined);
log('!undefined =' + !undefined);
log('!!undefined =' + !!undefined);
log('0 =' + 0);
log('!0 =' + !0);
log('!!0 =' + !!0);
log('---');
log('1 =' + 1);
log('!1 =' + !1);
log('!!1 =' + !!1);
log('---');
log('[] =' + []);
log('![] =' + ![]);
log('!![] =' + !![]);
log('---');
log('{} =' + {});
log('!{} =' + !{});
log('!!{} =' + !!{});
<div id='el'>Use case:</div>