Today I Learned - Rocky Kev

TIL Exceptions to the === rule

POSTED ON:

TAGS:

Exceptions to === rule

NaN === NaN is false
(although they are the same value.)

-0 === 0 and 0 === -0 are true
(although they are different values.)


let width = 0 / 0; // NaN
let height = width * 2; // NaN because of width

// when compared normally, it's false.
// but when compared with Object.is, it's true.
console.log(width === height); // false
console.log(Object.is(width, height)); // true


**Instead, check it with these:**
Number.isNaN(size)
Object.is(size, NaN)
size !== size

Humorously, you could think of Object.is(..) as the “quadruple-equals” ====, the really-really-strict comparison!

[why does -0 exist](https://softwareengineering.stackexchange.com/questions/280648/why-is-negative-zero-important/280708#280708)

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.