业务开发中经常遇到,接口返回值为空的情况,因此需要做到,兜底,一般采取 ?? 或者 || 符号来进行处理,那么他们之间到底有个啥区别呢?
??
主要用来专门处理 nul 和 undefiend 的情况
console.log(null ?? "default"); // 输出 "default"
console.log(undefined ?? "default"); // 输出 "default"
console.log(0 ?? "default");
// 输出 0
console.log(false ?? "default"); // 输出 false
console.log("") ?? "default"; // 输出 ""
console.log("hello" ?? "default"); // 输出 "hello"
||
|| 的逻辑在于返回第一个真值。 所以会将当前值先转换为 布尔值。 如果是 undefeind 0,"" ,Nan null。会隐士转换为false
console.log(null || "default"); // 输出 "default"
console.log(undefined || "default"); // 输出 "default"
console.log(0 || "default"); // 输出 "default"
console.log(false || "default"); // 输出 "default"
console.log("") || "default"; // 输出 "default"
console.log("hello" || "default"); // 输出 "hello"