我看到了一些代码,它们似乎使用了我不认识的运算符,它们以两个感叹号的形式出现,如下所示:!!。有人可以告诉我这个操作员做什么吗?
!!
我看到的背景是
this.vertical = vertical !== undefined ? !!vertical : this.vertical;
转换Object为boolean。如果是falsey(例如0,null,undefined等),这将是false,否则,true。
Object
boolean
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