Gli operatori si dividono in:
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:
| Operatore | Simbolo | Azione |
|---|---|---|
| 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 postfisso | Operatore 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:
| Operatore | Simbolo | Azione |
|---|---|---|
| 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 |
%) 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 compatta | Scrittura equivalente |
|---|---|
x += y | x = x + y |
x -= y | x = x - y |
x *= y | x = x * y |
x /= y | x = x / y |
x %= y | x = 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).
| Operatore | Azione |
|---|---|
> | 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):
| Operatore | Simbolo | Significato |
|---|---|---|
| AND | && | AND logico |
| OR | || | OR logico |
| NOT | ! | Negazione |
Le relative tabelle di verità sono:
| X | Y | X && Y | X || Y | !X |
|---|---|---|---|---|
| falso | falso | falso | falso | vero |
| falso | vero | falso | vero | vero |
| vero | falso | falso | vero | falso |
| vero | vero | vero | vero | falso |
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:
| Operatore | Azione |
|---|---|
| & | 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:
| Operatore | Nome | Utilizzo tipico |
|---|---|---|
+ | Addizione | stringa = stringaA + stringaB |
+= | Accoda | stringa = stringaA += "grassa" |
== | Uguaglianza | if(stringaA == stringaB) |
!= | Disuguaglianza | if(stringaA != stringaB) |
PhantomJS, headless browser per test con JavascriptIl tool ideale per realizzare, da terminale, operazioni in remoto su... |
Creare e leggere QR Code in JavaScriptApplicazioni 'QR Code enabled' per il Web e per il mobile,... |
Jquery UI Map: web-mapping con Google Maps e jQueryUn plugin di jQuery UI per intefacciare applicaizoni Web/mobile con... |
Scrollorama e Scrolldeck, slideshow d'effetto con jQueryPlugin jQuery per ottenere Slideshow con diversi effetti di scrolling |
jCanvas, un primo semplice graficoAlla scoperta della libreria jCanvas, per semplificare il disegno e... |
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |