Czy ktoś może wyjaśnić cel podwójnej negacji reverse
var w poniższym kodzie?Znaczenie [-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];
}
Tak jak ja to rozumiem, celem jest, aby wybrać odpowiedniego indeksu z tablicy [-1,1]
aby następnie wykorzystać je w mnożenie, ale wydaje mi się, że [-1,1][+!!reverse];
może być bezpiecznie zastąpione [-1,1][+reverse];
Am Mylę się? Co zyskujesz lub zapobiegasz przez podwójne negowanie tam reverse
?
Widziałem powyższy kod na this answer.
To jest niesamowite, ciekawy, aby zobaczyć odpowiedź na ten jeden –
Zmienia wartość reverse na boolean. [Co to jest !! (nie jest) operator w JavaScript?] (http://stackoverflow.com/questions/784929/what-is-the-not-not-operator-in-javascript) – Mizuho
Używałbym '(reverse? 1: -1) 'zamiast' [-1,1] [+ !! reverse] ', IMO jest po prostu bardziej przejrzysty, jest tańszy, nie potrzebuje obiektu tablicy i dostępu do indeksu, a nawet konwersja boolean jest niejawnie wykonana przez operator warunkowy ... – CMS