我看到一些代码似乎使用了我不认识的运算符,以两个感叹号的形式,像这样:!!。有人能告诉我这个接线员做什么吗?
我看到这件事的背景是,
this.vertical = vertical !== undefined ? !!vertical : this.vertical;
我看到一些代码似乎使用了我不认识的运算符,以两个感叹号的形式,像这样:!!。有人能告诉我这个接线员做什么吗?
我看到这件事的背景是,
this.vertical = vertical !== undefined ? !!vertical : this.vertical;
当前回答
这只是逻辑NOT运算符,两次。它用于将某些内容转换为布尔值,例如:
true === !!10
false === !!0
其他回答
!! 将其右侧的值转换为其等效的布尔值。(想想穷人的“类型转换”方式。)其目的通常是向读者传达,代码不关心变量中的值,而是关心变量的“真值”值。
你可以考虑!!以这种方式:
当第一次!应用时,变量变为布尔值,但值相反然后,第二个!只是恢复正义,并将价值恢复到原来的同等价值
它将Object转换为布尔值。如果为假(例如,0、null、undefined等),则为假,否则为真。
!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变量转换为布尔值,
var firstname = "test";
// Type of firstname is string
var firstNameNotEmpty = !!firstname;
// Type of firstNameNotEmpty is Boolean
JavaScript false表示“”、0、undefined和null。
JavaScript对于除零以外的数字是真的,而不是空字符串、{}、[]和new Date(),因此,
!!("test") /* Is true */
!!("") /* Is false */