this post was submitted on 23 Jun 2024
735 points (96.5% liked)
Programmer Humor
19586 readers
1030 users here now
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
Rules
- Keep content in english
- No advertisements
- Posts must be related to programming or programmer topics
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
The inspector REPL evaluates as a statement-with-value (like
eval
), so the{}
at the beginning is considered an empty block, not an object. This leaves+[]
, which is 0. I don't know what would make Node differ, however.Edit: Tested it myself. It seems Node prefers evaluating this as an expression when it can, but explicitly using
eval
gives the inspector behavior: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:
Yep, parentheses force
{}
to be interpreted as an expression rather than a block โ same reason why IIFEs have!function
instead of justfunction
./me goes back to get second folding chair.
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.