1.空值合并操作符(??
)
例如我们日常写的代码
let b;
let a = 0;
let c = { name:'yyqx' }
if(!!a || a === 0 ){
b = a;
}else{
b = c;
}
当我们想判断一个值存在,但是它等于0的时候,我们也需要当作它存在,于是就有了上面那样的例子,其实我们还可以这样做
let b;
let a = 0;
let c = { name:'yyqx' }
b = a ?? c;
上面的例子,当a除了undefined、或者null之外的任何值,b都会等于a,否则就等于c。
2.空值赋值运算符(??=)
let b = '你好';
let a = 0
let c = null;
let d = ’123‘
b ??= a; // b = “你好”
c ??= d // c = '123'
当??=左侧的值为null、undefined的时候,才会将右侧变量的值赋值给左侧变量.其他所有值都不会进行赋值.同样在一些场景下,可以省略很多代码.
3.可选链(.?)
let a;
let b = a.name;
该情况下,a并没有name属性,会报错。
一般情况下,我们会如下方法
let a;
let b;
if(!!a){
b = a.name;
}else{
b = undefined;
}
该方法 代码长,我们可用?.来写,如下
let a;
let b = a?.name;
只有当a存在,同时a具有name属性的时候,才会把值赋给b, 若a.name不存在。则将undefiend赋值给b,重要的是,不管a存在与否,这么做都不会报错.