Today I Learned - Rocky Kev

TIL of the difference between || and ??

POSTED ON:

TAGS:

What is ||? That's logical OR.

What is ??? That's nullish coalescing.

Both operators are often used to provide a default value if the first one is missing.

The main difference:

|| is checking ONLY for falsy.

?? is checking for null or undefined.

The problem with ||:

console.log(12 || "not found") // 12
console.log(0 || "not found") // "not found"

console.log(12 ?? "not found") // 12
console.log(0 ?? "not found") // 0

/////////
console.log("jane" || "not found") // "jane"
console.log("" || "not found") // "not found"

console.log("jane" ?? "not found") // "jane"
console.log("" ?? "not found") // ""

/////////
console.log(true || "not found") // true
console.log(false || "not found") // "not found"

console.log(true ?? "not found") // true
console.log(false ?? "not found") // false

You can start to see where the || can become problematic, and you're always safer to use ??.

via DMeechan's Stack Overflow comment


Related TILs

Tagged:

TIL what is npm Script

Despite their high usage they are not particularly well optimized and add about 400ms of overhead. In this article we were able to bring that down to ~22ms.

TIL fancy methods to transform Javascript Objects

You can use Object.entries(), Object.keys(), Object.fromEntries()...

TIL how to hide your JS code

ONE THING TO NOTE: Encrypting a script is stronger than obfuscation, both methods are still not adequate to protect secret content. Honestly, I don't think it's worth it on a production site, and instead just go with pure server-side if you want security. But it's fascinating.