214
all 29 comments
sorted by: hot top controversial new old
[-] lelgenio@lemmy.ml 48 points 1 month ago
[🌽].pop() == 🍿
[-] tetris11@lemmy.ml 28 points 1 month ago* (last edited 1 month ago)
"🚴".push() = "🚲🀸"
[-] BaumGeist@lemmy.ml 40 points 1 month ago
"☹️".reverse() == "☹️"
[-] hydroptic@sopuli.xyz 14 points 1 month ago
[-] BaumGeist@lemmy.ml 11 points 1 month ago

Look closer at the beauty mark, I flipped the emoji

[-] Boomkop3@reddthat.com 5 points 1 month ago* (last edited 1 month ago)

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

[-] AllNewTypeFace@leminal.space 29 points 1 month ago

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

[-] hydroptic@sopuli.xyz 28 points 1 month ago

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

[-] deathmetal27@lemmy.world 24 points 1 month ago

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

Close enough

[-] socsa@piefed.social 24 points 1 month ago

Be the operator overload you wish to see in the world

[-] CanadaPlus@lemmy.sdf.org 15 points 1 month ago* (last edited 1 month ago)

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

[-] hydroptic@sopuli.xyz 12 points 1 month ago

Calling reverse() on a function should return its inverse

[-] tetris11@lemmy.ml 7 points 1 month ago
isprime.reverse(True)
// outputs 19 billion prime numbers. Checkmate, atheists.
[-] CanadaPlus@lemmy.sdf.org 2 points 1 month 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 12 points 1 month ago
"🐈".concat() = "😼"
[-] skullgiver@popplesburger.hilciferous.nl 11 points 1 month ago* (last edited 3 weeks ago)

[This comment has been deleted by an automated system]

[-] RiceMunk@sopuli.xyz 11 points 1 month ago* (last edited 1 month ago)

but

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

[-] MultipleAnimals@sopuli.xyz 8 points 1 month ago

JavaScript taking notes

[-] 418teapot@lemmy.world 8 points 1 month ago* (last edited 1 month ago)

Best I can do is

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

returns "\ude42πŸ™"

[-] Boomkop3@reddthat.com 3 points 1 month ago

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

[-] hydroptic@sopuli.xyz 1 points 1 month ago

Where's your sense of adventure?!

[-] TCB13@lemmy.world 2 points 1 month ago

Today I found out that this is valid JS:

const someString = "test string";
console.log(someString.toString());
[-] skullgiver@popplesburger.hilciferous.nl 13 points 1 month ago* (last edited 3 weeks ago)

[This comment has been deleted by an automated system]

[-] hydroptic@sopuli.xyz 4 points 1 month ago* (last edited 1 month ago)

I dint know many OO languages that don’t have a useless toString on string types.

Well, that's just going to be one of those "it is what it is" things in an OO language if your base class has a toString()-equivalent. Sure, it's probably useless for a string, but if everything's an object and inherits from some top-level Object class with a toString() method, then you're going to get a toString() method in strings too. You're going to get a toString() in everything; in JS even functions have a toString() (the output of which depends on the implementation):

In a dynamically typed language, if you know that everything can be turned into a string with toString() (or the like), then you can just call that method on any value you have and not have to worry about whether it'll hurl at runtime because eg. Strings don't have a toString because it'd technically be useless.

[-] TCB13@lemmy.world 1 points 1 month ago

I dint know many OO languages that don’t have a useless toString on string types

Okay, fair enough. Guess I never found about it because I never had to do it... JS also allows for "test string".toString() directly, not sure how it goes in other languages.

[-] tmat256@lemmings.world 3 points 1 month ago

It's also incredibly useful as a failsafe in a helper method where you need the argument to be a string but someone might pass in something that is sort of a string. Lets you be a little more flexible in how your method gets called

[-] hydroptic@sopuli.xyz 11 points 1 month ago* (last edited 1 month 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.

this post was submitted on 27 Aug 2024
214 points (94.2% liked)

Programmer Humor

32225 readers
686 users here now

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

Rules:

founded 5 years ago
MODERATORS