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
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.
Ok some of these I understand but what the fuck. Why.
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
isn’t
===
the one that compare types first?I just tried on node and
0 == '0'
returns truefound the real reason
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.
So will
null <= 0
returns true?Why tho
a >= b, is equivalent to, !(a < b)