Operatori



Gli operatori si dividono in:

  1. operatori di assegnamento;
  2. operatori aritmetici;
  3. operatori logici;
  4. operatori sui bit, adoperati in genere solo per generare colori;
  5. operatori su stringhe.

possono essere unari o binari: i primi richiedono un unico operando, i secondi, invece, due.

Il primo operatore che occorre conoscere è l'operatore di assegnamento il cui segno è l'uguale (=), tuttavia il suo uso in Javascript è simile al C ed è diverso da quello della matematica perchè serve ad assegnare un valore e non ad effettuare confronti, per i quali esiste un altro operatore (==). Adoperando l'operatore di assegnamento si crea come una fotocopia del valore dell'espressione a destra dell'operatore sul dato a sinistra dell'operatore.

Gli operatori aritmetici sono binari e unari, gli operatori unari modificano il valore a cui sono applicati e sono:

OperatoreSimboloAzione
Incremento++Incrementa di un'unità
Decremento--Decrementa di un'unità
Meno unario-Rende negativo un numero

Gli operatori unari matematici possono essere posti prima (prefissi) o dopo (posfissi) dell'operando e il loro valore varia secondo questa posizione in quanto l'operatore prefisso modifica l'operando prima di utilizzarne il valore, mentre l'operatore posfisso modifica l'operando dopo averne utilizzato il valore, un esempio può chiarire:

Operatore postfissoOperatore prefisso
x=10;
y=x++;
x=10;
y=++x;
per cui y=10 e x=11 per cui y=11 e x=11

Gli operatori binari matematici non cambiano il valore degli operandi, ma memorizzano il risultato in un terzo operando e comprendono le principali operazioni aritmetiche:

OperatoreSimboloAzione
Addizione+Somma due operandi
Sottrazione-Sottrae il secondo operando dal primo
Moltiplicazione*Moltiplica i due operandi
Divisione/Divide il primo operando per il secondo
Resto (modulo)%Fornisce il resto della divisione intera tra due operandi
L'operatore modulo, indicato con la percentuale (%) calcola il resto delle divisioni tra interi, per questo motivo non trova applicazione con operandi in virgola mobile. Infatti l'operatore divisione, applicato a variabili di tipo intero produce un risultato troncato della parte decimale. Se si divide il modulo per zero, viene sollevata un'eccezione: se l'operazione eccede il limite inferiore (underflow) il risultato sarà zero, se eccede il limite superiore (overflow) si avrà un'approsimazione.

Esistono alcuni operatori che combinano l'assegnamento con altre operazioni aritmetiche. In questo modo alcune espressioni tipo:

<variabile> = <variabile> <operatore> <espressione>

possono diventare:

<variabile> <operatore>= <espressione>

Elechiamo i principali operatori combinati:

Scrittura compattaScrittura equivalente
x += yx = x + y
x -= yx = x - y
x *= yx = x * y
x /= yx = x / y
x %= yx = x % y

Con operatore relazionale si intende la relazione d'ordine che un valore ha rispetto ad un altro. Più semplicemente questi operatori servono per confrontare due valori. Se la condizione posta è verificata il risultato è positivo (vero), altrimenti é negativo (falso).

OperatoreAzione
>Maggiore di
>=Maggiore o uguale
<Minore di
<=Minore o uguale
==Uguale
!=Diverso

Le condizioni "vero" e "falso" sono indicate rispettivamente come 1 (o meglio "diverso da 0") e 0. È importante capire che l'output è dato solo da due valori per evitare confusioni tra l'operatore di assegnamento e quello di uguaglianza.

Gli operatori logici servono per creare espressioni booleane complesse, anche collegando tra loro le espressioni di verifica delle relazioni che abbiamo appena visto. Il risultato di una espressione è sempre di tipo vero/falso, o meglio '1' se l'espressione logica è verificata, '0' altrimenti.

Gli operatori logici che osserviamo sono binari, ovvero hanno in ingresso 2 valori, l'unica eccezione è l'operatore di negazione (il NOT) che è un operatore unario):

OperatoreSimboloSignificato
AND&&AND logico
OR||OR logico
NOT!Negazione

Le relative tabelle di verità sono:

XYX && YX || Y!X
falsofalsofalsofalsovero
falsoverofalsoverovero
verofalsofalsoverofalso
veroveroveroverofalso

Questi operatori sono utilissimi per raggruppare più espressioni che altrimenti sarebbero utilizzate con if annidati.

Le operazioni cosiddette bitwise o "bit a bit" si occupano di confrontare ogni cifra binaria, quindi ogni singolo bit che compone il contenuto delle variabili. Occorre ricordare che il risultato di queste operazioni non sempre danno 0 oppure 1, come per gli operatori logici.

Gli operatori sono:

OperatoreAzione
&AND
|OR
^XOR
~Complemento a uno
>>Shift a destra
<<Shift a sinistra
>>>Shift a destra con riempimento degli zeri

Esistono anche operatori di assegnamento combinati con operatori logici (&=, |=, ^=). Le tabelle di verità sono le stesse degli operatori logici.

Si può pensare all'operatore bitwise AND come un modo per cancellare un bit portandolo a 0 , l'operatore bitwise OR è invece può essere utilizzato per impostare ad 1 un bit, mentre l'operatore XOR può essere utilizzato per impostare ad 1 un bit se i bit confrontati sono diversi.

Gli operatori di shift scorrono tutti i bit di una variabile verso destra o verso sinistra di un numero di posizioni specificate e i nuovi bit che si creano vengono impostati ad 1, mentre i bit che escono sono persi (tranne quello del segno).

Le operazioni di shift sono utili per decodificare l'input di un dispositivo esterno come un convertitore analogico/digitale e consentono anche operazioni velocissime tra interi in quanto uno scorrimento a destra divide un numero per due e uno scorrimento a sinistra lo moltiplica per due.

L'operatore di complemento a uno, invece, inverte lo stato dei bit, per cui ogni 1 sarà tramutato in 0 e viceversa. Naturalmente due operazioni di complemento sullo stesso numero producono il numero originale.

Gli operatori su stringhe. Gli operatori che abbiamo esaminato possono essere utilizzati anche sulle stringhe. Vediamo quali effetti hanno:

OperatoreNomeUtilizzo tipico
+Addizionestringa = stringaA + stringaB
+=Accodastringa = stringaA += "grassa"
==Uguaglianzaif(stringaA == stringaB)
!=Disuguaglianzaif(stringaA != stringaB)

Ultimi articoli JavaScript

PhantomJS, headless browser per test con Javascript

Il tool ideale per realizzare, da terminale, operazioni in remoto su...

Creare e leggere QR Code in JavaScript

Applicazioni 'QR Code enabled' per il Web e per il mobile,...

Jquery UI Map: web-mapping con Google Maps e jQuery

Un plugin di jQuery UI per intefacciare applicaizoni Web/mobile con...

Scrollorama e Scrolldeck, slideshow d'effetto con jQuery

Plugin jQuery per ottenere Slideshow con diversi effetti di scrolling

jCanvas, un primo semplice grafico

Alla scoperta della libreria jCanvas, per semplificare il disegno e...

Altri articoli

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida Javascript: tecniche avanzate

Una guida dal taglio pratico per approfondire la programmazione a...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti