Ai đó có thể giải thích mục đích của việc bỏ hai lần số reverse
var trong mã dưới đây?Ý nghĩa của [-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];
}
Con đường tôi hiểu nó, mục đích là để chọn các chỉ số thích hợp từ các mảng [-1,1]
để sau đó sử dụng nó trong các nhân nhưng có vẻ như với tôi rằng [-1,1][+!!reverse];
có thể được thay thế một cách an toàn bằng cách [-1,1][+reverse];
Am Tôi sai? Bạn đạt được điều gì hoặc ngăn chặn bằng cách phủ nhận hai lần reverse
ở đó?
tôi thấy mã ở trên vào this answer.
Điều đó thật tuyệt vời, tò mò muốn xem câu trả lời trên số này –
Nó thay đổi giá trị đảo ngược thành boolean. [Cái gì !! (không phải) toán tử trong JavaScript?] (http://stackoverflow.com/questions/784929/what-is-the-not-not-operator-in-javascript) – Mizuho
Tôi sẽ sử dụng '(đảo ngược? 1: -1) 'thay vì' [-1,1] [+ !! đảo ngược] ', IMO rõ ràng hơn, rẻ hơn, nó không cần một đối tượng mảng và truy cập một chỉ mục, và thậm chí chuyển đổi boolean cũng được ngầm tạo ra toán tử điều kiện ... – CMS