一、?.、??、??=的用法和含义
1 可选链(?.)
let a;
let b = a.name;
会报错,因为undefined和null是两个比较特殊的数据类型,是不能用点操作符去访问属性的。可以这么写:
let b = a?.name;
注意:vue dom绑定时 {{}} 内不支持该写法
2 空值合并运算符(??)
let a = 0;
let b;
let c = { name:'xiaoming' }
b = a ?? c;
当a不是undefined、null的时候,b等于a,否则等于c
3 空值赋值运算符(??=)
let a = 0
let b = '你好';
let c = null;
let d = ’123‘
b ??= a; // b = “你好”
c ??= d // c = '123'
当??=左侧的值为null、undefined的时候,左侧变量=右侧变量的值,否则不变
二、|| 和&&(替换if else)
三、||取值(代替switch)
var b = 4;
var a = (b === 0 && 1) || (b === 1 && 2) || 3; // 3
相当于
switch(b) {
case 0:
a = 1;
break;
case 1:
a = 2;
break;
default:
a = 3;
break;
}
四、“~”(按位非)简化表达式
按位非操作符由一个波浪线(~)表示,按位非就是求二进制的反码。不管什么值使用了这个运算符,结果总是一个数字。按位非运算符,简单的理解就是改变运算数的符号并减去1。
~5 //-6
~0 //-1
~-2 //1
~true //-2 这里true被强转为1
~null //null被强转为0
~undefined //-1 这里undefined被强转为0
五、字符串互换
var a = 2,b = 'Miya';
[a,b,] = [b,a,]
a // Miya
b //2