出乎意料好用的JS运算符

227 阅读2分钟
  1. 判断一个数值是否为基数--%
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

所以,对补码进行位移会有不同的结果,如图

image.png

那么问题来了,有啥好用的呢? 答案是用于除2取整,方便又快捷,如图:

image.png