La risposta alla seconda parte della domanda, "questa stranezza è mai utile?" è forse no, come notato da una risposta precedente, se è davvero una stranezza del linguaggio (Javascript) che true è cast su 1, ma che il programmatore non vede in generale 1 e true (e 0 e false) come stessa cosa.
Se tuttavia hai un modello mentale di 1 che è vero e 0 che è falso, allora porta a tutti i tipi di belle tecniche booleane che sono estremamente utili, potenti e dirette. Ad esempio, è possibile incrementare un contatore direttamente con il risultato di A> 100, che aumenterebbe il contatore se A è maggiore di 100. Questa tecnica potrebbe essere vista come una stranezza o un trucco in Java, ma in un array o in un linguaggio funzionale può essere idiomatico.
Un classico esempio nel linguaggio APL dell'array sarebbe quello di contare il numero di elementi in un array che sono (diciamo) maggiori di 100:
+/A>100
Dove se A è l'array a 5 elementi 107 22 256 110 3, allora:
A>100
restituisce l'array booleano a 5 elementi:
1 0 1 1 0
e sommando questo risultato booleano:
+/1 0 1 1 0
fornisce la risposta finale:
3
Questa domanda è un esempio perfetto di dove questa tecnica sarebbe molto utile, specialmente se il problema è generalizzato per determinare se n valori booleani n su m sono veri.
Controlla se almeno due booleani su tre sono veri