最近 JavaScript 从 es6 就提高了更新频率,2019还没有结束 2020的规范就已经开始出草案了😵。

话不多说

可选链运算符 ??

场景:访问嵌套对象时如果当前为 undefined 或者为 null这时再做其他操作将会报错,可选链运算符可完美解决。

const obj = {
a: 1,
b: ''
}

console.log(obj.a); // 1
console.log(obj.a.b); // undefined
console.log(obj.a.b.c); // Uncaught TypeError: Cannot read property 'c' of undefined
console.log(obj.a.b?.c);
// 使用可选链运算符 ?. 来访问嵌套对象,如果碰到的是 undefined 或 null 属性,只会返回 undefined
console.log(obj.b?.substring); // ƒ substring() { [native code] }

使用可选链运算符 ?. 来访问嵌套对象,如果碰到的是 undefined 或 null 属性,只会返回 undefined

空值合并运算符

场景:当给变量值为 undefined 或者 null 设置默认值时会遇到变量为 空字符串或为0的尴尬情况

const x = 0;
const y = x || 'false';
const z = x ?? 'false';
console.log(y); // 'false'
console.log(z); // 0