ecma2020 新特性 ?? 和 ? .
这是2020年年中出的新特性,特比有意思,在对于常用的编码中也是特别的常用,且使用方式特别方便.
- 1 是否存在判定 ?.
上代码:
// 经常用到的对象取值,但是由于各种情况,对导致 a/b 甚至obj不存在的情况,导致程序报错,运行终止
let bac = obj.a.b.c
// 一般改写 - 存在的情况下使用
let abc = obj && obj.a && obj.a.b && obj.a.b.c ? 'abc' : obj.a.b.c;
// ?. 改写
let abc = obj?.a?.b?.c || 'abc';
- 2 容错数据添加 ??
// 常用写法 - 可能在obj.a 的取值是 一个假值, 在使用 || 逻辑的时候,会被后面的值给处理掉;当我们需要对 特定的类型,比如无数据- null, undifined, NAN 的时候,我们期望可以处理 ,而返回 0 的时候,需要为0;但是当前默认数据却为1的时候,就需要进行二次判定
let abc = obj.a || 'abc';
// 常规写法
let abc = typeof obj.a === undefined ? do : doOTher;
let abc = obj.a === 0 ? 0 : 1;
// es2010
let abc = obj.a ?? 1; // 不为null,undefined真是为空的数据时,会生效;
网友评论