- 判断一个数值是否为基数--%
let num = val => val % 2 == 0;
num(10) // ture 偶数
num(1) // false 奇数
2.判断前者是否存在,存在则调用--?.
let obj = {}
console.log(obj.name.toString()) // 报错
console.log(obj.name?.toString()) // undefined
3.三目运算符--?:
let gender = 1
let genderText = gender === 1 ? '男' : '女'
4.判断只有前面的值为undefined才会执行--??
let rows = undefined;
let text = rows ?? "暂无任何内容"
console.log(text) // 暂无任何内容
5.条件与--&&
let obj = {}
obj.getName() // 报错
obj.getName && obj.getName() // 不报错,当obj.getName存在时才会调用
6.向下取整--~~
console.log(~~3.4) // 3
7.+--+ 除了进行加法运算外,还可以把数字字符串转换为数字(仅限信任该变量数字或数字字符串时,其他字符串则会转换为NaN)
console.log(+'1') // 1
console.log(+'a') // NaN
8.移位-->>/>>>
">>"表示带符号位移, ">>>"表示无符号位移,如: 5>>1 表示5的二进制(101)数往右移1位,变成(10),即是5>>1=2
当操作的数为正数时,二者无区别,5>>>1=2
当操作负数时,二者有区别,-5在计算机中是以补码存在(补码=反码+1),也就是11111111111111111111111111111011(一共32位,4个字节)
tips:
- 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 如:00000000 00000000 00000000 00000101 是5的原码。
- 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。取反操作指:1变0, 0变1
- 补码:反码+1
所以,对补码进行位移会有不同的结果,如图
那么问题来了,有啥好用的呢? 答案是用于除2取整,方便又快捷,如图: