¿Puede alguien explicar el propósito de la anulación doble de la var reverse
en el código siguiente?Significado de [-1,1] [+ !! boolean_var]
return function (a,b) {
var A = key(a), B = key(b);
return ((A < B) ? -1 :
(A > B) ? +1 : 0)) * [-1,1][+!!reverse];
}
La manera en que yo entiendo, el objetivo es escoger el índice adecuado de la matriz [-1,1]
para luego usarlo en la multiplicación, pero me parece que [-1,1][+!!reverse];
podría sustituirse con seguridad por [-1,1][+reverse];
Am Estoy equivocado? ¿Qué gana o previene al negar por duplicado reverse
allí?
vi el código anterior en this answer.
Eso es asombroso, curioso de ver una respuesta en este –
Cambia el valor de revertir a un booleano. [¡¿Qué es el !! (no no) operador en JavaScript?] (http://stackoverflow.com/questions/784929/what-is-the-not-not-operator-in-javascript) – Mizuho
Yo usaría '(reverse? 1: -1) 'en lugar de' [-1,1] [+ !! reverse] ', IMO es más claro, es más barato, no necesita un objeto de matriz y accede a un índice, e incluso la conversión booleana está implícitamente hecha por el operador condicional ... – CMS