this post was submitted on 04 Jun 2025
170 points (97.8% liked)

Programmer Humor

36439 readers
381 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] HiddenLayer555@lemmy.ml 21 points 1 week ago* (last edited 1 week ago) (1 children)
('b' + 'a' + + 'a' + 'a').toLowerCase()

Returns "banana"

[–] doubtingtammy@lemmy.ml 8 points 1 week ago (2 children)
[–] somedev@aussie.zone 7 points 1 week ago (1 children)

I'm guessing the + + in the middle returns NaN

[–] gratux@lemmy.blahaj.zone 4 points 1 week ago

Indeed, the unary plus operator tries to convert whatever is after it to a number if it isn't already. Since 'a' is not a valid number, it returns NaN (not a number)

[–] propter_hog@hexbear.net 2 points 1 week ago* (last edited 1 week ago) (2 children)

'a' + +

This part is the same as writing 'a'++ and that returns "NaN" (short for "not a number") since you can't increment a character, but this return type is a string, so the interpreter just concatenates it with the other letters: baNaNa. Then that string is converted to lower case to give the final result, "banana".

[–] sgh@lemmy.ml 7 points 1 week ago (1 children)

The space makes that two different tokens, in reality what happens is 'a' + (+'a') that resolves to 'a' + 'NaN'.

[–] propter_hog@hexbear.net 2 points 1 week ago

Yep, I believe you're right

[–] simontherockjohnson@lemmy.ml 3 points 1 week ago* (last edited 1 week ago)

Ironically 'a'++ works in C/C++ because 'a' is char where in JS 'a' is string.