Supponiamo di voler scrivere un programma che calcoli il doppio di un numero. Supponiamo che il numero sia 10: basta scrivere un'istruzione del tipo:
<input type=button name="scrivi" value="Doppio di 10" OnClick="window.alert(2*10)">
per ottenere (Premere il pulsante)
Lo scopo di un programma tuttavia è quello di risolvere una classe di problemi, ad esempio, nel nostro caso, sarebbe utile calcolare il doppio non di un solo numero, ma di qualsiasi numero introdotto.
Allo scopo, si usano le variabili che, intuitivamente, rappresentano il contenitore temporaneo nel quale viene memorizzato il dato immesso dall'utente.
Nel nostro esempio, dovremo:
memorizzare in una variabile il numero;
moltiplicarlo per due;
scrivere il risultato.
MEMORIZZARE
Basta dare un nome alla variabile ed assegnarle un valore mediante il segno = .
Si usa cioè la seguente sintassi:
NomeVariabile = valore; oppure var NomeVariabile = valore;
Il primo membro rappresenta il nome della variabile; il secondo membro il contenuto della variabile stessa. Quando il documento viene scaricato dalla memoria il valore della variabile va perduto.
Notare che il simbolo = non significa uguale come in matematica ma, nel linguaggio JavaScript, assume il signifucato di operatore di assegnazione: esso ha il compito di assegnare alla variabile di nome NomeVariabile il valore scritto a destra. Potremo meglio visualizzare il simbolo = con
Ad esempio,
mentre in matematica
se a=b, allora b=a (proprietà communtativa dell'uguaglianza),
in Javascript
NomeVariabile = valore non equivale a valore=NomeVariabile anzi, se ad esempio scrivessimo 10=a otterremmo un messaggio di errore.
Inoltre, se a=10 e b=20
in matematica
a=b è falso;
in JavaScript
a=b fa sì che:
nella variabile a viene memorizzato 20;
nella variabile b resta memorizzato il valore 20;
b=a fa sì che:
nella variabile b viene memorizzato 10;
nella variabile a resta memorizzato il valore 10.
Quindi il valore memorizzato in una variabile va perduto quando ad essa si assegna un nuovo valore.
NOMI ALLE VARIABILI
La lunghezza del nome può essere scelta a piacere, ma ricordiamo che se il nome è più breve il programma è più veloce. Inoltre:
l'iniziale deve essere una lettera oppure il carattere _ ;
non ci devono essere spazi;
non si possono usare caratteri speciali (come . , ? e così via) tranne il segno di sottolineatura _ ;
alcuni termini, detti parole riservate non possono essere usati come nomi per le variabili;
i nomi delle variabili sono case-sensitive, cioé sensibili alle maiuscole o minuscole. Ad esempio, se abbiamo indicato una variabile con MiaVariabile, essa risulta diversa da miaVariabile, mIavariabile e così via.
TIPI DI VARIABILE
A differenza di linguaggi più evoluti, Javascript non richiede la dichiarazione del tipo di variabile, ma attribuisce alla stessa il tipo più appropriato in base al literal (letterale) in essa memorizzato seguendo le rispettive regole sintattiche. Questo sistema, comodo perché non richiede noiose dichiarazioni iniziali, può tuttavia creare dei risultati del tutto inaspettati se non si agisce con prudenza.
Ecco la lista dei tipi semplici:
numerico
quando alla variabile viene assegnato un numeric literal Esempi: a=35; b=34.27; c=4.2E10; h=0xfa;
string (string)
quando alla variabile viene assegnato uno string literal Esempi: a="Ciao" oppure a='Ciao'; b='2003'
Le variabili tipo string possono anche contenere valori numerici, ma in questo caso non è possibile eseguire operazioni matematiche con essi.
Boolean
quando alla variabile viene assegnato un boolean literal
Esempi: flag=true;
a= 5>3; (in questo caso viene valutata l'espressione a destra: se essa è vera, alla variabile viene attribuito il valore true, altrimenti false).
Nessuno vieta di attribuire alla stessa variabile, nello stesso programma, valori appartenenti a tipi diversi. Ad esempio si può scrivere:
a=156;
a='Ciao come stai?'
In altri linguaggi più evoluti, come Pascal o Visual Basic, questo sarebbe vietato. JavaScript invece converte automaticamente i dati da un tipo all'altro. Questo può essere comodo, ma anche creare dei problemi.
Codici di esempio a=window.prompt('Inserisci il dato');
a=MioForm.testo.value;
In questi casi i dati vengono automaticamente assunti come stringhe e può accadere di non ottenere il risultato desiderato, soprattutto se si usa l'operatore + che serve sia per addizionare i numeri che per concatenare le stringhe.
Prova il seguente codice
Per ottenere questo risultato
<script language=JavaScript>
function prova1() {
a=window.prompt('Inserisci il dato',3);
window.alert(a+a);
}
</script>
<a href="javascript:prova1()">Clicca qui</a>
Nell'esempio 1. si ottiene una concatenazione di stringhe, mentre nell'esempio 2. viene calcolato il quadrato del numero inserito nella finestra di prompt.
Non sempre quindi le variabili vengono automaticamente convertite in formato numerico: per stare tranquilli, useremo il metodo eval()
Prova il seguente codice
Per ottenere questo risultato
<script language=JavaScript>
function prova() {
a=eval(window.prompt('Inserisci il dato',3));
window.alert(a+a);
}
</script>
<a href="javascript:prova()">Clicca qui</a>
Anche se quasi sempre la conversione di tipo viene fatta in modo automatico per evitare sorprese è meglio assicurarsi di star usando il tipo che ci serve nel programma
ABBREVIAZIONI PER DICHIARARE LE VARIABILI
Una per riga, separandole con il punto e virgola:
var uno;
var due;
Sulla stessa riga, separandole con la virgola:
var uno, due;
Si può inoltre assegnare lo stesso valore a più variabili in questo modo:
var uno = due = 'quello che mi pare';