Condividi tramite


Istruzioni condizionali

Per impostazione predefinita, le istruzioni contenute nel codice JScript vengono eseguite in sequenza. Potrebbe essere utile, tuttavia, modificare la sequenza logica e trasferire il controllo a una parte non sequenziale del codice in base a condizioni specifiche. Una struttura di controllo trasferisce il controllo del programma in una destinazione o nell'altra a seconda che un'istruzione condizionale sia true o false. Ogni espressione a cui può essere assegnato forzatamente un valore Boolean può essere utilizzata come istruzione relativa a una condizione. Di seguito sono menzionate alcune comuni istruzioni relative a condizioni.

Uguaglianza e identità

L'operatore di uguaglianza (==) in un'istruzione relativa a una condizione consente di verificare se due argomenti che gli sono stati passati hanno lo stesso valore. Se necessaria per consentire il confronto, viene eseguita una conversione del tipo. Mediante l'operatore di identità (===) viene confrontato sia il valore che il tipo di due espressioni. Il valore restituito è true solo se il valore e il tipo di dati sono gli stessi per i due operandi. L'operatore di identità non fa distinzione tra i vari tipi di dati numerici.

Nel codice JScript riportato di seguito viene combinato un operatore di uguaglianza con un'istruzione if che lo utilizza. Per ulteriori informazioni, vedere Strutture di controllo.

function is2000(x) : String {
   // Check if the value of x can be converted to 2000.
   if (x == 2000) {
      // Check is the value of x is strictly equal to 2000.
      if(x === 2000)
         print("The argument is number 2000.");
      else
         print("The argument can be converted to 2000.");
   } else {
      print("The argument is not 2000.");
   }
}
// Check several values to see if they are 2000.
print("Check the number 2000.");
is2000(2000);
print("Check the string \"2000\".");
is2000("2000")
print("Check the number 2001.");
is2000(2001);

L'output di questo codice è il seguente:

Check the number 2000.
The argument is number 2000.
Check the string "2000".
The argument can be converted to 2000.
Check the number 2001.
The argument is not 2000.

Disuguaglianza e non identità

L'operatore di disuguaglianza (!=) restituisce il risultato opposto a quello dell'operatore di uguaglianza. Se gli operandi hanno lo stesso valore, l'operatore di disuguaglianza restituisce false, altrimenti restituisce true. Analogamente, l'operatore di non identità (!==) restituisce il risultato opposto a quello dell'operatore di identità.

Nell'esempio di codice JScript riportato di seguito l'operatore di disuguaglianza è utilizzato per controllare un ciclo while. Per ulteriori informazioni, vedere Strutture di controllo.

var counter = 1;
// Loop over the print statement while counter is not equal to 5.
while (counter != 5) { 
   print(counter++);
}

L'output di questo codice è il seguente:

1
2
3
4

Confronto

Gli operatori di uguaglianza e di disuguaglianza sono utili in presenza di porzioni di dati con un determinato valore. Tuttavia, in alcune situazioni è necessario verificare se un valore rientra in un particolare intervallo. In questi casi si potranno utilizzare gli operatori relazionali minore di (<), maggiore di (>), minore o uguale a (<=) e maggiore o uguale a (>=).

if(tempInCelsius < 0)
   print("Water is frozen.")
else if(tempInCelsius > 100)
   print("Water is vapor.");
else
   print("Water is liquid.);

Valutazione short circuit

Se è necessario verificare più condizioni contemporaneamente e si sa che una di queste ha maggiori possibilità rispetto alle altre di essere vera o falsa, è possibile utilizzare una funzione definita "valutazione in corto circuito" per velocizzare l'esecuzione dello script ed evitare effetti secondari che potrebbero generare errori. Durante una valutazione di un'espressione logica in JScript viene considerato solo il numero di sottoespressioni necessario per ottenere un risultato.

L'operatore AND logico (&&) valuta per prima l'espressione di sinistra passatagli. Se l'espressione restituisce false, il risultato dell'operatore AND logico non potrà essere true indipendentemente dal valore dell'espressione di destra. Pertanto l'espressione di destra non verrà valutata.

Ad esempio, nell'espressione ((x == 123) && (y == 42)), JScript controlla innanzitutto se x corrisponde a 123. In caso contrario, y non verrà valutato e verrà restituito il valore false.

In modo analogo, l'operatore logico OR (||) valuta innanzitutto l'espressione a sinistra. Se questa restituisce true, l'espressione a destra verrà ignorata.

La valutazione short circuit risulta utile se le condizioni da verificare implicano l'esecuzione di chiamate di funzione o di altre espressioni complesse. Per rendere più efficiente l'esecuzione di uno script quando si utilizza l'operatore OR logico, inserire per prime le condizioni il cui valore è con maggiore probabilità true. Se si utilizza l'operatore AND logico, inserire per prime le condizioni il cui valore è con maggiore probabilità false.

Di seguito viene descritto un esempio dei vantaggi connessi a questo tipo di progettazione di script: in questo caso, se runfirst() restituisce false, runsecond() non verrà eseguito.

if ((runfirst() == 0) || (runsecond() == 0)) {
   // some code
}

Di seguito viene descritto un esempio dei vantaggi connessi a questo tipo di progettazione di script: in questo caso, se runfirst() restituisce false, runsecond() non verrà eseguito.

if ((x == 0) && (y/x == 5)) {
   // some code
}

Altro

Ogni espressione convertibile in un valore Boolean può essere utilizzata come istruzione relativa a una condizione. È ad esempio possibile utilizzare un'espressione quale la seguente:

if (x = y + z) // This may not do what you expect - see below!

Si noti che il codice precedente non consente di verificare se x è uguale a y + z, poiché in tale sintassi è stato utilizzato un unico segno di assegnazione (=). Il codice sopra riportato consente invece di assegnare il valore y + z alla variabile x, quindi di verificare se il risultato dell'intera espressione, ovvero il valore di x, può essere convertito nel valore true. Per verificare se il valore di x è uguale a y + z, utilizzare il codice seguente:

if (x == y + z) // This is different from the code above!

Vedere anche

Concetti

Dati Boolean

Altre risorse

Strutture condizionali JScript

Tipi di dati JScript

Riferimenti al linguaggio JScript

Operatori (Visual Studio - JScript)