我们在项目中经常会遇到当值A不存在时,返回值B的情况,例如:
const count = 0 || 1;
这时,我们想要得到的是1,返回的也是1没错,但是如果我们是想比较0和1呢,那使用||还是会返回1,而不会返回0,但是??是会返回0的,如:
const count = 0 ?? 1;
这里返回0,那||和??的区别是什么?
-
||会将之前的值A,转换成布尔值,然后判断,0转换成布尔值为false,所以会返回1。
-
??只会判断值A是不是null或者undefined,如果是,则返回值B,不是返回值A。
案例:
null || 1 //返回1
undefined || 1 //返回1
0 || 1 //返回1
'' || 1 // 返回1
[] || 1 //返回[]
null ?? 1 //返回1
undefined ?? 1 // 返回1
0 ?? 1 // 返回0
'' ?? 1 // 返回''
[] ?? 1 // 返回[]