?? || 傻傻分不清

81 阅读1分钟

业务开发中经常遇到,接口返回值为空的情况,因此需要做到,兜底,一般采取 ?? 或者 || 符号来进行处理,那么他们之间到底有个啥区别呢?

??

主要用来专门处理 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"