! 运算符都用过,取反的意思,比如在做逻辑判断的时候,它作用就是转换数据为布尔值然后取反。
// 判断今天是不是礼拜天,你可能会这样
if (0 == new Date().getDay()) {
// 礼拜天
}
// 直接这样写
if (!new Date().getDay()) {
// 礼拜天
// 只用礼拜天才等于零,取反后就是真
}
而 !! 则是双重取反,负负得正嘛,可以得到该数据的布尔类型,相当于简变了布尔值的转换,经常用于强转布尔值的简写。
var a = "hello"
var b = 2020
var c = null
console.log(Boolean(a), Boolean(b), Boolean(c))
console.log(!!a, !!b, !!c)
// 结果一样: true, true, false
var a = 1
var x = a ? true : false
// 或者
var x = !!a