比较陌生的运算符:
[delete](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/delete) obj.name
:一般用于删除对象上的某个属性,而不是用于数组噢~a
:按位非运算符,反转操作数的比特位,即0变成1,1变成0a&b
:按位与,只有两个操作数相应的比特位都是1时,结果才为1,否则为0a|b
:按位或,当两个操作数相应的比特位至少有一个1时,结果为1,否则为0a^b
:按位异或,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0a<<b
:左移,将 a 的二进制形式向左移 b (< 32) 比特位,右边用0填充a>>b
:有符号右移,将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位a>>>b
:无符号右移,将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位,并使用 0 在左侧填充"name" in obj
:如果指定的属性在指定的对象或其原型链中,则in 运算符返回trueconst foo = null ?? 'default string'
:当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。而使用||可能会有意外之外的行为,如左侧为””或0时会返回右侧;a.speed??=25
:相当于a.speed = a.speed ?? 25