sacco di modi per farlo
// implicit cast
+true; // 1
+false; // 0
// bit shift by zero
true >>> 0; // 1, right zerofill
false >>> 0; // 0
true << 0; // 1, left
false << 0; // 0
// double bitwise NOT
~~true; // 1
~~false; // 0
// bitwise OR ZERO
true | 0; // 1
false | 0; // 0
// bitwise AND ONE
true & 1; // 1
false & 1; // 0
// bitwise XOR ZERO, you can negate with XOR ONE
true^0; // 1
false^0; // 0
// even PLUS ZERO
true + 0; // 1
false + 0; // 0
// and MULTIPLICATION by ONE
true * 1; // 1
false * 1; // 0
È inoltre possibile utilizzare la divisione per 1
, true/1; // 1
, ma vorrei consigliare di evitare divisione dove possibile.
Inoltre, molti degli operatori non unari hanno un assignment version quindi se si ha una variabile che si desidera convertire, è possibile farlo molto rapidamente.
È possibile visualizzare un confronto dei diversi metodi con this jsperf.
fonte
2013-02-09 11:49:54
Probabilmente non hai bisogno di farlo. Qualsiasi operazione aritmetica convertirà comunque i tuoi booleani: ad esempio 'true + true + true == 3' – Eric
Qualsiasi operatore che converte i suoi operandi in valori numerici lo farà. Elenco di tutti gli operatori: http://es5.github.com/#x11-toc. –
@FelixKling puoi correggere il collegamento? –