问题

我看到一些代码似乎使用我不识别的操作符,形式为两个感叹号,如下所示:!!.有人可以告诉我这个操作符做了什么吗?

我看到的背景是

 this.vertical = vertical !== undefined ? !!vertical : this.vertical;
 

  最佳答案

胁迫oObject到布尔值.如果它是Falsey(例如0,null,undefined等),它将是false,否则,true.

 !oObject  //Inverted boolean
!!oObject //Non inverted boolean so true boolean representation
 

所以!!不是运算符,它只是!运算符两次.

实际世界示例“Test IE版本”:

 let isIE8 = false;  
isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);  
console.log(isIE8); // returns true or false 
 

如果你

 console.log(navigator.userAgent.match(/MSIE 8.0/));  
// returns either an Array or null  
 

但如果你

 console.log(!!navigator.userAgent.match(/MSIE 8.0/));  
// returns either true or false
 

  相同标签的其他问题

javascriptoperators
上一个问题: