When I first looked at this, I wasn’t quite sure what it did, but as I started to take it apart, it became clear. It’s a very clever little piece of code.
This was part of the return value of the sort function, which, if it returns a 1, sorts ASC, and -1 sorts DESC. This little snippet switches that.
The way it works, is it creates a small two-element array [-1, 1] and then pulls out the n-th element where n is +!!reverse.
It’s the same as writing:
var test = [-1, 1]; var idx = +!!reverse; return test[idx];
The !! part makes sure that reverse is a boolean, and the + converts it to an int.
Very interesting, and I had to look at it for a second to really figure it out.
Original snippet location:
UPDATE: After playing with this code, and really looking at it, I’ve decided that this piece of code, while clever, is poor programming.
The reason I think this is for one, it’s not clear what it does at first glance, and secondly, it can be re-written to be both more readable, and less prone to errors.
I rewrote the code to look like this:
(reverse ? -1 : 1)
This small difference was enough for me to decide that this bit of code was too fragile and needed to go.
If you’ll also notice, in the original code, reverse was actually set when the sort order was normal (returning 1), and unset when the sort order was reversed (returning -1). I also fixed this, making the name of the variable match it’s function, thereby making the code even more clear.