一尘不染

JavaScript 中的!!是不是运算符?

javascript

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

我看到这个的背景是,

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

阅读 234

收藏
2022-01-12

共1个答案

一尘不染

转换Object为boolean. 如果是falsey(例如0,null,undefined等),这将是false,否则,true

!oObject  // inverted boolean
!!oObject // non inverted boolean so true boolean representation

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

真实世界示例“测试 IE 版本”:

const 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
2022-01-12