开发过程中,我们经常会用运算符: + - == != && || 等等,但今天翻看项目源码的时候发现了一个奇特的写法 : ~~
因为比较少见,所以在此记录一下:
其实就是将后面的变量转化为数字类型,但只能判断可等价转换的类型。例如:
console.log(~~true) // 结果为1
console.log(~~false) // 结果为0
console.log(~~null) // 结果为0
console.log(~~!null) // 结果为1
console.log(~~0) // 结果为0
console.log(~~1) // 结果为1
console.log(~~123456) // 结果为123456
// 注意 只能转为数字类型 以下写法输出是0
console.log(~~"") // 结果为0
console.log(~~"我不是空字符串") // 结果为0
console.log(~~[]) //结果为0
console.log(~~[1,2,3]) //结果为0
console.log(~~{}) //结果为0
console.log(~~{a:1,b:2}) //结果为0