js中??和||的区别

102 阅读1分钟

我们在项目中经常会遇到当值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 // 返回[]