JavaScript的 || and ?? 的区别详解

84 阅读1分钟

老样子直接上代码

const t1 = '';
const t2 = null;

const t1_test1 = t1 || '此时t1为假会走这个或者条件';
const t1_test2 = t1 ?? '此时t1本质上是有值的所以会直接输出空字符串';

const t2_test1 = t2 || '此时t2为假会走这个或者条件';
const t2_test2 = t2 ?? '此时t2本质上就是没值的所以也会走这个条件';

console.log(t1_test1);
console.log(t1_test2);

console.log(t2_test1);
console.log(t2_test2);

详解

1. // || 本质上是条件判断也就是说当 t1 or t2 等于false的时候同样会执行 || 后的条件(包括隐式转换后的条件)
2. // ?? 只是单纯的看当前值是否有值如果有就会直接利用不进行判断(也就是说即使 t1 or t2 等于false也会使用) 只有当值真的不存在时才会使用后代条件(真的不存在例如:null、undefined...)