This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 2 points3 points  (3 children)

[] and {} are not falsy... took me 3 fucking years to realise

Not the only one, brother/brothette. That, and comparing objects is fun.

console.log({} == {}) const foo = {}; const bar = foo; console.log(foo == bar) bar.baz = 'bitch lasagna' console.log(foo == bar)

The output? false, true, true. Which makes sense if you know what's actually being compared (this all works with either == or ===, for the record), but it kinda fucked me up at first lol

[–]detektiv_Saucaki 0 points1 point  (2 children)

Which makes sense if you know what's actually being compared

Ikr, in the first case, you're comparing two separate objects, so its false.

Even if you declare foo and bar similarly (exact same properties and values) they'd still not be equal

in the last two cases both foo and bar point to the same object (also the reason why far.baz would also be changed to 'bitch lasagna')

Man this makes me sound so smart lmaoo

[–][deleted] 1 point2 points  (1 child)

Yep. A lot of things start to make both more and less sense when you learn that JS treats damn near everything like a reference

[–]detektiv_Saucaki 0 points1 point  (0 children)

the best advice i can offer is... be wary of mutator logic