Originariamente inviato da Xinod
o usi == o rendi il valore del secondo prompt sicuramente un numero
if(risultato === parseInt(risposta,10)){...}
Esatto. In questo caso dare:
codice:
if (risultato === parseFloat(risposta)) { … } // confronto due numeri
oppure
codice:
if (risultato.toString() === risposta) { … } // confronto due stringhe
implica lo stesso sforzo per l'interprete che dare:
codice:
if (risultato == risposta) { … } // confronto un numero con una stringa
Ma tieni conto che ci sono casi in cui il doppio uguale (che converte in automatico) è più dispendioso del triplo uguale accompagnato da conversione manuale, perché l'interprete può trovarsi a dover fare diversi tentativi con prova ed errore prima di trovare la conversione giusta (primo valore nel formato del secondo? secondo valore nel formato del primo? non sempre la risposta coincide: e quello continua fin quando non trova un true o non finiscono le combinazioni).
Quindi il consiglio che ti do è di usare sempre il triplo uguale con conversione manuale. Anche se in questo caso, come ti dicevo non fa nessuna differenza e puoi benissimo scegliere.
Per non parlare poi dei casi in cui sai già che i due valori sono nello stesso formato: lì il triplo uguale è quasi un dovere.
Possono sembrare quisquiglie. Ma ti assicuro che un'uguaglianza fatta in un modo piuttosto che in un altro può cambiare di parecchio il tempo di risposta se inserita in cicli molto grandi (te lo dice uno che ha lavorato a un gioco di scacchi in JavaScript)…