JavaScript

Sjmarf@sh.itjust.works to Programmer Humor@programming.dev – 709 points –
82

You are viewing a single comment

So there's yet another level of quirkery to this bullshit then, it seems. 😆 Nice digging! 🤝

I also noticed that if you surround the curlies with parentheses, you get the same again:

> eval('{} + []')
0
> eval('({}) + []')
'[object Object]'

Yep, parentheses force {} to be interpreted as an expression rather than a block — same reason why IIFEs have !function instead of just function.

I thought IIFE's usually looked like (function (...params) {})(...args). That's not the latest way? To be honest I never used them much, at least not after arrow functions arrived.