Bitwise Not & indexOf
Honestly, I’ve found precious few instances in which I need to use javascript’s bitwise not operator. However, I stumbled across a particularly nice usage of it this morning as I was perusing the express source.
When I use indexOf to check for a substring I often feel the statement is rather clumsy, especially if the variable name is particularly long.
if (someLongVariableName.indexOf(someSubstring) == -1) {
// do stuff
}
The == -1
part seems to get lost at the end of the expression and it takes me
an extra moment to parse the code. However, I found this brilliant little nugget
that makes it much easier to read.
res.contentType = function(type){
if (!~type.indexOf('.')) type = '.' + type;
return this.header('Content-Type', mime.type(type));
};
Taking advantage of the fact that ~(-1) == 0
(and it is the only number with
this property), our statement becomes truthy or falsey and we can change
our previous example to
if (!~someLongVariableName.indexOf(someSubstring)) {
// do stuff
}