在JavaScript中,`!!`(不是not)操作符的作用是什么?

发布时间 2023-10-18 20:42:42作者: 小满独家

内容来自 DOC https://q.houxu6.top/?s=在JavaScript中,!!(不是not)操作符的作用是什么?

我看到了一些代码,似乎使用了我不知道的操作符,形式为两个感叹号,就像这样:!!。有人能告诉我这个操作符是做什么的吗?

我看到这个操作符的上下文是:

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


它把 Object 转换为 boolean。如果它是假值(例如,0nullundefined 等),那么它将是 false,否则是 true

!object  // 反转布尔值
!!object // 非反转布尔值,所以是 true 的布尔表示

因此 !! 不是一个操作符;它只是 ! 操作符的两次使用。

可能更简单的方法是:

Boolean(object) // 布尔值

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

const isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);
console.log(isIE8); // 返回 true 或 false

如果你 ⇒

console.log(navigator.userAgent.match(/MSIE 8.0/));
// 返回一个数组或 null

但如果你 ⇒

console.log(!!navigator.userAgent.match(/MSIE 8.0/));
// 返回 true 或 false