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

2022-01-29 00:00:00 operators javascript

我看到一些代码似乎使用了我不认识的运算符,以两个感叹号的形式出现,例如:!!.谁能告诉我这个运算符是做什么的?

I saw some code that seems to use an operator I don't recognize, in the form of two exclamation points, like so: !!. Can someone please tell me what this operator does?

我看到这个的背景是,

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

推荐答案

Object 转换为 boolean.如果为假(如0nullundefined等),则为false,否则为false, .

Converts Object to boolean. If it was falsey (e.g. 0, null, undefined, etc.), it will be false, otherwise, true.

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

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

So !! is not an operator, it's just the ! operator twice.

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

Real World Example "Test IE version":

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

相关文章