布尔判定
 
假:false  0  ''  null  undefined  NaN  
 
可选符.?和??
 
let obj = {name: 'jim',data: {money: 0,age: 18,fn(a){return a}}
}1、如果左侧的值为null或者undefined,则使用右侧值。需要使用"??"
obj?.data?.age ?? 0    => 18
obj?.data?.sex ?? 'man'    => 'man'2、如果左侧的值可以转化为false,则使用右侧值。需要使用"||"
obj?.data?.money || ''    => ''
 
短路运算符
 
// 得到第一个为真的值,如果全部是假,得到最后一个值
eg: 0 || '' || 3     ->3
eg: 0 || 3 || ''     ->3
eg: null || 0 || ''    -> ''
// 得到第一个为假的值,如果全部是真,得到最后一个值
eg: 3 && 5 && ''    ->''
eg: 3 && '' && 5    ->''
eg: 3 && 5 && 7   ->7
eg: a && a.b && a.b.c(被可选符替代a?.b?.c)