The JavaScript Fallacy
April 26th, 2011
As someone with a rampant interest in UI engineering, I work a lot with JavaScript. I’d venture to say that it’s one of my favorite languages, mainly because it’s quick and flexible, but relatively clean…like a cat. Also like a cat, it can be a fickle, fickle beast. Here’s something I ran into yesterday:
// true stuff
0 == false;
1 == true;
// also true
"0" == false;
"1" == true;
// to be expected
0 ? true : false == false;
// WTF?
"0" ? true : false == true;
// or in another light
if ("0") { alert("I will show up"); }
if ("0" == true) { alert("I will not"); }
Clearly we have some temperamental1 loose typing. Stupid cats2.
1 This is, not at all, how I thought this word was spelled. From now on, I’m saying temp-er-a-mental.
2 Note, I actually like cats… Even if they are whorish.
2 Note, I actually like cats… Even if they are whorish.
