JavaScript/Operatori e casting

Indice del libro

In questo modulo affronteremo l'uso degli operatori e della conversione (casting) per lavorare con i dati in JavaScript. Di ogni operatore verrà indicato il tipo di dati con i quali lavora e il tipo di dato restituito.

Operatori matematici

modifica

Questi operatori lavorano con valori interi o float e restituiscono sempre un valore numerico; sono piuttosto intuitivi in quanto corrispondono ai normali operatori algebrici. Sono:

  • + e - (addizione e sottrazione algebrica)
  • * e / (moltiplicazione e divisione algebrica)
  • % restituisce il resto della divisione intera tra i due operanti (modulo).

Quando si lavora con gli operatori numerici è bene fare attenzione alla precedenza algebrica delle operazioni. Vengono infatti valutate prima moltiplicazioni e divisioni e poi addizioni e sottrazioni.
È tuttavia possibile utilizzare delle parentesi per comporre più operatori e più espressioni; in JavaScript non esistono distinzioni tra parentesi tonde, quadre o graffe, in quanto si usano solo quelle tonde.

Vediamo, ad esempio, come convertire un valore di temperatura espresso in gradi Fahrenheit al suo corrispondente in gradi Celsius. Inseriamo nella pagina HTML questo codice:

<script type="text/javascript">
 var gradiF = prompt("Introdurre la temperatura in gradi Fahrenheit",100);
 var gradiC = 5/9 * (gradiF - 32);
 alert(gradiC);
</script>

Analizziamo riga per riga il listato JavaScript:

  • la prima riga dichiara la variabile gradiF e le assegna il valore restituito dalla funzione prompt.
 
Un esempio di finestra prompt
Il metodo prompt visualizza una finestra di input che mostra il testo indicato come primo argomento e un valore di default indicato come secondo argomento (separato tramite la virgola). Nel nostro caso, la funzione mostrerà una finestra chiedendo di introdurre il valore della temperatura in gradi Fahrenheit proponendo come valore 100. L'utente è libero di modificare o meno questo valore e di premere uno dei due pulsanti OK o Annulla. Premendo OK, la funzione restituisce il valore immesso dall'utente, altrimenti restituisce 0.
  • la seconda riga calcola il valore della temperatura in gradi Celsius usando l'equazione apposita
  • la terza riga mostra una finestra alert (già vista nei precedenti moduli) contenente il valore della temperatura in gradi Celsius.

Si noti che il metodo prompt restituisce sempre un valore stringa ma, nel momento in cui la variabile stringa gradiF viene usata insieme ad operatori numerici, il suo valore viene automaticamente convertito in un valore numerico.
Possiamo vedere inoltre che, poiché il metodo alert richiede un valore stringa mentre noi abbiamo passato un valore numerico, JavaScript converte automaticamente il numero in una stringa contenente esattamente il valore richiesto.

Nel comporre le espressioni è necessario tenere conto della precedenza delle operazioni (prima vengono valutate moltiplicazioni e divisioni, poi addizioni e sottrazioni). Nel comporre le espressioni possono risultare utili le parentesi; in questo caso è possibile usare solo parentesi tonde (JavaScript non supporta l'uso di parentesi quadre e graffe nelle espressioni). Ad esempio:

3 + 4 / 2 //restituisce 5
(3 + 4) / 2 //restituisce 3.5
(3 + (2 + 6) * 2) /2 //restituisce 9.5

Esistono poi due operatori chiamati unari in quanto lavorano su un solo dato numerico. Sono:

  • ++ incrementa di uno il valore della variabile
  • -- decrementa di uno il valore della variabile

Questo operatore può essere usato da solo oppure all'interno di un'espressione:

var1++ //corrisponde a var1 = var1 + 1
var1-- //corrisponde a var1 = var1 - 1
var2 = var1++ - 15 // corrisponde a var2 = var1 -15; var1 = var1 +1

È possibile inoltre nel caso di istruzioni come

var1 = var1 + n;
var2 = var2 / n

Usare la notazione:

var1 += n;
var2 /= n;

Operatori stringa

modifica

L'operazione più utilizzata quando si lavora con le stringhe è la concatenazione, che consiste nell'unire due stringhe accostandole una di seguito all'altra. L'operatore di concatenazioni in JavaScript è +. Vediamo alcuni esempi:

alert("Io sono " + "un utente di wikibooks!");
var nome = "Luigi";
alert("Io mi chiamo " + nome);

L'output di questo breve listato sono due finestre alert contenenti il testo Io sono un utente di wikibooks! e Io mi chiamo Luigi. Si noti lo spazio prima delle virgolette. Possiamo quindi ampliare l'esempio precedente modificando l'ultima riga con:

alert(gradiF + " gradi Farhenheit corrispondono a " + gradiC + " gradi Celsisus");

In questo caso la variabile gradiC viene convertita automaticamente in una stringa.

Operatori booleani

modifica

Sono chiamati operatori booleani o di confronto quelli che restituiscono un valore booleano (vero o falso) e confrontano due valori dello stesso tipo di dato. Sono:

  • < (minore)
  • <= (minore o uguale)
  • == (uguale)
  • >= (maggiore o uguale)
  • > (maggiore)

Tranne che per ==, il loro uso è strettamente legato ai dati numerici ed è intuitivo. Ad esempio:

4 > 3 //restituisce true
4 == 5 //restituisce false

È possibile inoltre comparare le stringhe. Ad esempio:

"wikibooks" ==  "wikibooks" //true 
"wikibooks" ==  "it.wikibooks" //false
"wikibooks" ==  "Wikibooks" //false (distingue maiuscole e minuscole)

È possibile inoltre comporre le espressioni booleane usando gli operatori della logica, che lavorano con valori booleani e restituiscono a loro volta un valore bollano. Sono:

Anche in questo caso è possibile comporre le espressioni con le parentesi

(a > 0) && (a < 100) // Restituisce true se il valore di a è maggiore di 0 e minore di 100
(a < 0) || (b > 20) // Restituisce true se almeno una delle due espressioni è vera
!(a < 0) // Restituisce true se il valore di a NON è minore di 0

Se JavaScript si aspetta un dato booleano e riceve un altro tipo di dato, converte in false le stringhe vuote e il numero 0, in true il resto.

Comporre le espressioni

modifica

Dopo aver analizzato gli operatori, è possibile comporre le espressioni. Un'istruzione è un insieme di uno o più valori legati da operatori che restituisce un valore; per comporre un'espressione possiamo usare quindi qualsiasi istruzioni restituisca un valore, ad esempio:

alert("Ciao, " + prompt("Come ti chiami?"));

è una espressione valida, in quanto la funzione prompt restituisce un valore; il risultato è una casella di prompt seguita da un alertbox che dà il benvenuto all'utente