我看到一些代码似乎使用了我不认识的运算符,以两个感叹号的形式,像这样:!!。有人能告诉我这个接线员做什么吗?
我看到这件事的背景是,
this.vertical = vertical !== undefined ? !!vertical : this.vertical;
我看到一些代码似乎使用了我不认识的运算符,以两个感叹号的形式,像这样:!!。有人能告诉我这个接线员做什么吗?
我看到这件事的背景是,
this.vertical = vertical !== undefined ? !!vertical : this.vertical;
当前回答
这是检查未定义、“未定义”、null、“null”、“”
if (!!var1 && !!var2 && !!var3 && !!var4 ){
//... some code here
}
其他回答
!! 只是两次NOT运算符。净效果就是转换任何东西以确保布尔数据类型。例如
!!undefined为false!!0为假!!null为false!!anyobject为true!!真是真!!false是false!0为真!1为假!!'' 是假的
! 是“Boolean not”,这实际上是将“enable”的值类型化为其布尔值的相反值。第二个!翻转此值。所以enable表示“不启用”,将enable值作为布尔值。
它将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 */
它不是一个操作员;它是两个。它相当于以下内容,是将值转换为布尔值的快速方法。
val.enabled = !(!enable);