Vai al contenuto

Javascript – Operatore ternario

L’operatore ternario (detto anche “operatore di selezione”) fornisce una sintassi abbreviata per esprimere un particolare tipo di if.

Questa situazione infatti:

if (condizione) {//istruzione 1 (singola istruzione)} else {istruzione 2 (singola istruzione)}

Può essere anche rappresentata più sinteticamente con l’utilizzo dell’operatore ternario:

<condizione> ? <istruzione1> : <istruzione2>

Se nell’esempio delle lezioni precedenti avessimo voluto scrivere due differenti valori per l’altezza della cella, uno per la risoluzione di 800×600 e uno per tutte le altre risoluzioni, al posto di:

if (screen.width==800) {altezzaCella=100;}
else {altezzaCella=150;}

avremmo potuto scrivere:

screen.width==800 ? altezzaCella=100 : altezzaCella=150;

Volendo, l’utilizzo delle parentesi permette di comprendere meglio il costrutto:

(screen.width==800)?(altezzaCella=100):(altezzaCella=150);

Avremmo anche potuto usare la sintassi più compatta:

altezzaCella=screen.width==800?100:150;

Quanto costano i trasporti?

Qui un esempio pratico del codice. Se mettiamo volessimo creare un programma che calcola la convenienza tra la scelta di usare un’auto e prendere il treno potremmo usare l’operatore ternario per restituire output. (In questo caso prima ci sarebbe un inserimento dati tramite Input manuale o API dei costi dei trasporti).

var trainCost = 3;
var carCost = 2;
carCost < trainCost ? print('Drive a car') : print('Buy train tickets');

Lo sniff dei browser

L’operatore ternario viene spesso usato nella sintassi che prevede lo “sniff” (cioè l’individuazione) del browser. È un procedimento tipicamente utilizzato nel dhtml (è l’utilizzo congiunto di JavaScript e dei css) per scrivere sintassi crossbrowser (che vada bene cioè tanto per Internet Explorer, quanto per Netscape o altro):

Il metodo è questo:

  • se esiste document.all (o document.layers o altro)
  • viene inizializzata una variabile a true
  • altrimenti alla variabile viene assegnato il valore di false

Ad esempio:

document.all? IE=true:IE=false;

che può anche essere scritto (semplificando la sintassi):

IE= document.all?true: false;

Poi è sufficiente verificare:

if (IE) { ... }

per sapere di avere a che fare con Interent Explorer.

Il procedimento dettagliato per lo sniff del browser è descritto nell’articolo L’arte dello sniffing: come riconoscere i browser

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *