JavaScript coders have used boolean variations and equivalents since the language's inception. No matter an object's type, it can be a boolean. They are about the nicest values out there! There are truthy and falsy booleans, primitive boolean values, and Boolean objects - which aren't really booleans, but can be used in boolean comparisons. Then there are JavaScript expressions, which can also be booleans.
My habit with boolean expressions, was to return the inverse of some variable at the end of a function. As in, initialize a boolean flag (that is, any variable with a boolean value), then invert it's value before returning it. This silly function below, illustrates my point.
function isOk() {
var notOk = false;
// do some logic
return !notOk;
}
So the boolean expressions I used involved variables, and I'd somehow trained myself to code this way. This wasn't going to work in my project. I didn't have or want variables to flip in all my functions. Nor was continuing to use keywords like true and false. Lastly, I couldn't continue returning 1's and 0's, since they weren't actual booleans.
Then I recalled that numbers are expressions - they're just missing an operator (or have an implied one, for you uber-geeks). When placing a logical NOT operator before any variable (or, in this case, a number), the result is a boolean value! Thus, with two characters, I can express the smallest boolean in JavaScript.
function doAndConfirm() {
if (doThing())
return !0;
else
return !1;
}
For some, there are performance implications to consider. I have not tested this, and frankly assume that a computer won't choke on such a minuscule expressions. However, there is a real readability drawback. Plus, I do confuse sending the number 1 instead of "!0".
That is the stupidest thing Ive ever seen.
ReplyDelete