JavaScript: il type casting implicito spiegato ai programmatori Java

Per chi proviene da un linguaggio fortemente tipizzato come Java, imparare JavaScript è molto più difficile di quanto non si pensi. Questo perché JavaScript è un linguaggio debolmente tipizzato in cui la conversione tra tipi di dati avviene implicitamente (casting implicito). I programmatori JavaScript spesso sfruttano questa caratteristica a loro favore, ma per gli altri è un problema.

Consideriamo la seguente funzione che somma due numeri:


var sum = function(a, b) {
	var result = a + b;
	console.log(result);
};

Ecco come si comporta JavaScript:

Casting implicito in JavaScript
Codice Tipi di dati Risultato Tipo del risultato
sum(1, 2) Numero, numero 3 Numero
sum('1', 2) Stringa, numero 12 Stringa
sum(true, 2) Booleano, numero 3 Numero
sum(undefined, 2) undefined, numero NaN NaN
sum(null, 2) null, numero 2 Numero

Una soluzione a questo problema è quella di verificare sempre se il tipo di dati passato è corretto:


if(typeof a === 'number' && typeof b === 'number') {
	// eseguo l'operazione
}

Un'altra soluzione, meno affidabile, è quella di eseguire il casting in modo esplicito:


var n1 = Number(a);
var n2 = Number(b);

Tuttavia nel caso del valore undefined questa soluzione peggiora il problema. È sempre meglio verificare in anticipo il tipo di dati per evitare sorprese.

Torna su