this post was submitted on 27 Aug 2024
216 points (94.3% liked)

Programmer Humor

32396 readers
502 users here now

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

Rules:

founded 5 years ago
MODERATORS
 
all 29 comments
sorted by: hot top controversial new old
[–] lelgenio@lemmy.ml 50 points 2 months ago (1 children)
[🌽].pop() == 🍿
[–] tetris11@lemmy.ml 29 points 2 months ago* (last edited 2 months ago)
"🚴".push() = "🚲🀸"
[–] BaumGeist@lemmy.ml 41 points 2 months ago (2 children)
"☹️".reverse() == "☹️"
[–] hydroptic@sopuli.xyz 15 points 2 months ago (1 children)
[–] BaumGeist@lemmy.ml 11 points 2 months ago

Look closer at the beauty mark, I flipped the emoji

[–] Boomkop3@reddthat.com 5 points 2 months ago* (last edited 2 months ago)

wasn't it
πŸ™
.
r
e
v
e
r
s
e
()

[–] AllNewTypeFace@leminal.space 30 points 2 months ago (1 children)

Then β€œb” backwards would have to be β€œd”

[–] hydroptic@sopuli.xyz 29 points 2 months ago

"E".reverse() == "βˆƒ"

[–] socsa@piefed.social 26 points 2 months ago

Be the operator overload you wish to see in the world

[–] deathmetal27@lemmy.world 25 points 2 months ago

":-)".reverse() == ")-:"

Close enough

[–] CanadaPlus@lemmy.sdf.org 15 points 2 months ago* (last edited 2 months ago) (1 children)

Also, it should turn an error into an empty but successful call. /s

[–] hydroptic@sopuli.xyz 12 points 2 months ago (1 children)

Calling reverse() on a function should return its inverse

[–] tetris11@lemmy.ml 8 points 2 months ago (1 children)
isprime.reverse(True)
// outputs 19 billion prime numbers. Checkmate, atheists.
[–] CanadaPlus@lemmy.sdf.org 2 points 2 months ago

It's a just a joke, but I feel like that actually says something pretty profound about duck typing, and how computable it actually is.

[–] tetris11@lemmy.ml 13 points 2 months ago
"🐈".concat() = "😼"
[–] RiceMunk@sopuli.xyz 12 points 2 months ago* (last edited 2 months ago)

but

"πŸ™‚".reverse() == "πŸ™ƒ"

[–] 418teapot@lemmy.world 10 points 2 months ago* (last edited 2 months ago)

Best I can do is

"\ude41πŸ™‚".split("").reverse().join("")

returns "\ude42πŸ™"

[–] MultipleAnimals@sopuli.xyz 9 points 2 months ago

JavaScript taking notes

[–] Boomkop3@reddthat.com 3 points 2 months ago (1 children)

You could implement that on a chat, but I wouldn't do that on a string

[–] hydroptic@sopuli.xyz 2 points 2 months ago

Where's your sense of adventure?!

[–] TCB13@lemmy.world 2 points 2 months ago (2 children)

Today I found out that this is valid JS:

const someString = "test string";
console.log(someString.toString());
[–] hydroptic@sopuli.xyz 11 points 2 months ago* (last edited 2 months ago)

Everything that's an Object is going to either inherit Object.prototype.toString() (mdn) or provide its own implementation. Like I said in another comment, even functions have a toString() because they're also objects.

A String is an Object, so it's going to have a toString() method. It doesn't inherit Object's implementation, but provides one that's sort of a no-op / identity function but not quite.

So, the thing is that when you say const someString = "test string", you're not actually creating a new String object instance and assigning it to someString, you're creating a string (lowercase s!) primitive and assigning it to someString:

Compare this with creating a new String("bla"):

In Javascript, primitives don't actually have any properties or methods, so when you call someString.toString() (or call any other method or access any property on someString), what happens is that someString is coerced into a String instance, and then toString() is called on that. Essentially it's like going new String(someString).toString().

Now, what String.prototype.toString() (mdn) does is it returns the underlying string primitive and not the String instance itself:

Why? Fuckin beats me, I honestly can't remember what the point of returning the primitive instead of the String instance is because I haven't been elbow-deep in Javascript in years, but regardless this is what String's toString() does. Probably has something to do with coercion logic.