是什么 !! (不是)JavaScript中的运算符?

我看到一些代码似乎使用了一个我不认识的运算符,以两个感叹号的形式出现,如:!!有人可以告诉我这个操作符的作用吗?

我看到这个的背景是,

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

解决方法:

将oObject强制转换为布尔值.如果它是假的(例如0,null,undefined等),则为false,否则为true.

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

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

真实世界示例“测试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
上一篇:c# – 平等和分配运算符


下一篇:javascript – 如果条件内部不是(!!)