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

标签 javascript operators

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

我看到这个的背景是,

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

最佳答案

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

!object  // Inverted Boolean
!!object // Noninverted Boolean, so true Boolean representation

所以 !! 不是一个运算符;只是两次 ! 运算符。

这样做可能更简单:

Boolean(object) // Boolean

真实示例“测试 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

关于javascript - 是什么 !! JavaScript 中的(不是 not)运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25053504/

相关文章:

f# - F# 中的全局运算符重载

javascript - Typescript 泛型返回类型问题

javascript - 编辑接触 Angular 时用值填充输入框

javascript - 如何缩短表示字符序列的位数

javascript - javascript函数什么时候需要在require语句后添加空括号?

javascript - 刷新 div 内的链接不起作用

swift - 如何使用 "OR"在 Swift 中比较字符串

python - 如果元组被描述为序列类型,为什么长度为 1 的元组被视为标量?

c++ - 什么时候重载 operator new?

java - Groovy 猫王运算符