this post was submitted on 16 Jun 2023
35 points (94.9% liked)

Programmer Humor

34474 readers
23 users here now

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

Rules:

founded 5 years ago
MODERATORS
 
top 20 comments
sorted by: hot top controversial new old
[–] julianh@lemm.ee 4 points 2 years ago (2 children)

Ok some of these I understand but what the fuck. Why.

[–] RagingToad 5 points 2 years ago* (last edited 2 years ago) (4 children)

I'm not sure if you really want to know, but:

greater than, smaller than, will cast the type so it will be 0>0 which is false, ofcourse. 0>=0 is true.

Now == will first compare types, they are different types so it's false.

Also I'm a JavaScript Dev and if I ever see someone I work with use these kind of hacks I'm never working together with them again unless they apologize a lot and wash their dirty typing hands with.. acid? :-)

edit: as several people already pointed out, my answer is not accurate. The real solution was mentioned by mycus

[–] hstde@lemmy.fmhy.ml 2 points 2 years ago

Not a JavaScript dev here, but I work with it. Doesn't "==" do type coercion, though? Isn't that why "===" exists?

As far as I know the operators ">=" and "<=" are implemented as the negation of "<" and ">" respectively. Why: because when you are working with sticky ordered sets, like natural numbers, those operators work.

Thus "0<=0" -> "!(0>0)" -> "!(false)" -> "true"

Correct me if my thinking is wrong though.

[–] mycus@kbin.social 2 points 2 years ago* (last edited 2 years ago)

isn't === the one that compare types first?

I just tried on node and 0 == '0' returns true


found the real reason

[–] tr00st@lemmy.tr00st.co.uk 1 points 2 years ago

So how do you feel about using !! as a "truthification" operator?

[–] MMauro@feddit.it 1 points 2 years ago

Now == will first compare types

Wouldn't that be ==='s job?

[–] Daniikk1012@lemmy.world 1 points 2 years ago

a >= b, is equivalent to, !(a < b)

[–] TwilightKiddy@programming.dev 3 points 2 years ago* (last edited 2 years ago) (1 children)

This one is one of my favourite JS quirks:

JS quirk

[–] LeFrog@discuss.tchncs.de 0 points 2 years ago (1 children)

Wait wtf is happening there?

[–] usernamesAreTricky@lemmy.ml 2 points 2 years ago

parseInt is meant for strings so it converts the number there into a string. Once the numbers get small enough it starts representing it with scientific notation. So 0.0000001 converts into "1e-7" where it then starts to ignore the e-7 part because that's not a valid int, so it is left with 1

https://javascript.plainenglish.io/why-parseint-0-0000001-0-8fe1aec15d8b

[–] bettse@lemmy.ml 2 points 2 years ago
[–] Mars@beehaw.org 2 points 2 years ago (1 children)

I know it’s a joke, but it’s an old one and it doesn’t make a lot of sense in this day and age.

Why are you comparing null to numbers? Shouldn’t you be assuring your values are valid first? Why are you using the “cast everything to the type you see fit and compare” operator?

Other languages would simply fail. Once more JavaScript greatest sin is not throwing an exception when you ask it to do things that don’t make sense.

[–] OsrsNeedsF2P@lemmy.ml 1 points 2 years ago

Shouldn’t you be assuring your values are valid first?

Step 1: Get to prod

Step 2-10: Add features

Step 11: Sell the company before it bites you

[–] Xylight@lemmy.xylight.dev 2 points 2 years ago

POV: you don't understand type coercion

[–] unique_hemp@discuss.tchncs.de 1 points 2 years ago
[–] Bjoern_Tantau@feddit.de 0 points 2 years ago (1 children)

Can someone explain this? I mean, the last result. Usually I can at least understand Javascript's or PHP's quirks. But this time I'm stumped.

[–] mycus@kbin.social 0 points 2 years ago (1 children)

JS null and undefined shenanigans


basically:

  1. bigger an lesser comparison types convert null to zero, so is zero bigger or lesser than zero? no
  2. == is fucky and to it null only equals undefined and undefined only equals null (and themselves), so no
  3. is zero bigger than or equal to zero? yeah
[–] Bjoern_Tantau@feddit.de 0 points 2 years ago (1 children)

Ugh, thanks, of course. Stupid brain.

[–] mycus@kbin.social 1 points 2 years ago (1 children)

I'm starting to think JS maintainers have a thing against mathematicians

[–] Quik2007@kbin.social 1 points 2 years ago

more likely against humans

load more comments
view more: next ›