INDICE JAVASCRIPT 1.01 - Introduzione a JavaScript 1.02 - Storia ed evoluzione del linguaggio 1.03 - Gli strumenti di lavoro 1.04 - Strumenti di sviluppo nei browser 1.05 - Console 1.06 - JS e HTML, librerie e codice JavaScript esterno 1.07 - Commenti, punti e virgola e maiuscole 1.08 - Stringhe, numeri e altri tipi di dati JavaScript APPENDICE - ESEMPI Dal sito HTML.it Guida JavaScript di base Ritorna all'indice 1.01 - Introduzione a JavaScript JavaScript è uno dei linguaggi di programmazione più usati al mondo, anche se con una storia di alti e bassi, la sua consolidata presenza nell’olimpo dei grandi linguaggi come C, C++ e Java è certa. La seguente tabella, tratta dal TIOBE Index, testimonia la crescita di popolarità di questo linguaggio:
Figura 1. Statistiche TIOBE Index Un andamento analogo è registrato anche da un altro indicatore di popolarità dei linguaggi di programmazione: PYPL L’enorme diffusione di JavaScript è dovuta principalmente al fiorire di numerose librerie nate allo scopo di semplificare la programmazione sul browser, ma anche alla nascita di framework lato server e nel mondo mobile che lo supportano come linguaggio principale. Molti sviluppatori JavaScript hanno prima imparato a conoscere le varie librerie come jQuery, MooTools, Prototype ed altre e la loro effettiva conoscenza del linguaggio spesso è rimasta molto limitata. Altri utenti JavaScript provengono da esperienze di sviluppo in altri linguaggi di programmazione e molto spesso questo genera confusione o sottovalutazione delle potenzialità del linguaggio di scripting. Ad esempio, diversi sviluppatori Java, C++ o C#, trasferiscono più o meno incosciamente le caratteristiche del loro linguaggio a JavaScript, vista la somiglianza sintattica, ma questo talvolta è fonte di errori e di una non corretta valutazione delle sue effettive capacità. Infine c’è da considerare che non tutti gli utenti di JavaScript sono veri e propri sviluppatori. Molti sono utenti che in un modo o nell’altro si sono trovati a dover integrare delle pagine Web con JavaScript, spesso partendo con un copia e incolla di blocchi di codice trovati in giro per Internet. La diffusione di JavaScript non è necessariamente indice della sua effettiva conoscenza. Considerato però il peso crescente che ha questo strumento, anche al di fuori del Web, è opportuno da un lato riscoprirne le nozioni sintattiche di base e dall’altro esplorare concetti più evoluti che nel tempo si sono aggiunti allo standard del linguaggio, in costante trasformazione. È indubbio che concentrarsi su JavaScript garantisca l’acquisizione di competenze valide anche per il futuro. In questa guida esploreremo gli elementi di base del linguaggio, dalla dichiarazione delle variabili ai tipi di dato, dalle istruzioni alle funzioni. Analizzeremo la sua relazione “storica” con l’HTML e il browser e vedremo il supporto agli oggetti e la relazione con il modello OOP, fino ad arrivare all’utilizzo delle espressioni regolari, ad Ajax e dare una visione sulle tecnologie che si stanno muovendo intorno al linguaggio. Il tutto aggiornato naturalmente allo stato attuale della tecnologia. Ritorna all'indice 1.02 - Storia ed evoluzione del linguaggio JavaScript è stato ideato nel 1995 da Netscape e rilasciato con la versione 2.0 del suo browser, Netscape Navigator, dapprima con il nome LiveScript e subito dopo con l’attuale nome, creando all’inizio non poca confusione con Java che proprio in quell’anno debuttava con grande attenzione da parte del mondo del software. Da subito JavaScript aggiunse alle pagine HTML la possibilità di essere modificate in modo dinamico, in base all’interazione dell’utente con il browser (lato client). Questo grazie alle funzionalità di calcolo e di manipolazione dei documenti che era possibile effettuare anche senza coinvolgere il server. Questa caratteristica è stata sottolineata durante gli anni ’90 con il nome che veniva dato all’accoppiata HTML-JavaScript: Dynamic HTML (DHTML). Nel 1997, sulla base del linguaggio di Netscape, nacque lo standard ECMA-262 definito dall’organismo di standardizzazione industriale ECMA International che rappresentava le specifiche del linguaggio ECMAScript. Il linguaggio definito dall’ECMA, nelle versioni che si sono susseguite, è il punto di riferimento non solo per JavaScript, ma anche per altri linguaggi come ad esempio ActionScript, WMLScript e QtScript. L’esigenza di rendere il Web sempre più interattivo e dinamico favorì la nascita di tecnologie concorrenti: Flash, ActiveX e gli Applet Java. Queste tecnologie fornivano la possibilità di realizzare funzionalità ed effetti grafici di maggior impatto rispetto a quanto possibile con JavaScript, ma richiedevano specifici runtime o, come i controlli ActiveX, giravano solo su uno specifico browser.
Figura 2. Dynamic HTML La concorrenza tra componenti esterni e JavaScript è durata diversi anni e vide Flash predominante sul fronte dell’interazione utente e dei formati per l’advertising, a discapito di JavaScript, che sembrava essere destinato ad un lento declino. Flash, tecnologia di Macromedia poi acquisita da Adobe, spopolò grazie alla semplicità di realizzazione di contenuti e interfacce, ma anche grazie all’assenza di una implementazione univoca degli standard HTML e JavaScript soprattutto dovuta alla cosiddetta Guerra dei Browser, ovvero la competizione tra vendor, iniziata da Microsoft e Netscape e finita solo nella seconda metà degli anni 2000 con l’avvento di una più attenta adesione agli standard W3C. Fu l’avvento della tecnologia Ajax, la possibilità cioè di comunicare in maniera asincrona con il server tramite script, a riportare JavaScript sulla cresta dell’onda. Il rinnovato interesse verso il linguaggio con le nuove potenzialità applicative ha fatto nascere il cosiddetto Web 2.0 ed ha fatto fiorire numerose librerie con lo scopo di semplificare alcune delle attività più comuni e di bypassare le differenze che ancora c’erano tra i Browser, favorendo una programmazione unificata e più rapida. Abbiamo per le mani un linguaggio maturo e utilizzabile in diversi contesti non più necessariamente legati al Web. L’evoluzione del linguaggio da una parte e l’avvento di HTML5 dall’altra hanno ulteriormente amplificato le possibilità applicative del linguaggio, anche al di fuori del semplice Web browser. JavaScript può essere utilizzato anche lato server, in applicazioni desktop e mobile. Si tratta quindi non più di un semplice collante tra codice HTML e l’utente. Allo stato attuale, l’ultima versione ufficiale di ECMAScript è la 6, pubblicata a giugno del 2015. Questa versione delle specifiche, indicata generalmente con ES6 o come ECMAScript 2015, aggiunge delle interessanti novità al linguaggio di scripting e nel corso della guida verranno opportunamente evidenziate. Tuttavia, il loro supporto da parte dei browser più recenti non è del tutto completo. Vedremo comunque come, nonostante tutto, le nuove funzionalità di JavaScript derivanti da ES6 possano essere utilizzato sin da ora. Ritorna all'indice 1.03 - Gli strumenti di lavoro Come per qualsiasi linguaggio di programmazione, per iniziare a lavorare con JavaScript c’è bisogno di almeno tre strumenti: • un editor; • un interprete o compilatore; • un debugger. Come editor è naturalmente possibile utilizzare un comune editor di testo. Molti hanno ormai funzionalità di supporto allo sviluppo con vari linguaggi di programmazione, tra cui anche JavaScript: evidenziazione della sintassi, completamento automatico, snippet di codice. Grazie anche alla disponibilità di plugin, alcuni editor diventano dei veri e propri ambienti di sviluppo integrati, ad esempio: • Notepad++ dispone di plugin per formattare il codice, per effettuare l’analisi statica rispetto a regole di codifica, per generare una versione compatta degli script, etc. (ha l’unico “difetto” di girare solo su Windows); • Sublime text consente, tra le altre cose, di definire dei veri e propri build system ed è disponibile per Windows, Linux e Mac. D’altro canto, anche i tradizionali ambienti di sviluppo integrati, come ad esempio Visual Studio ed Eclipse, prevedono ormai un supporto specifico per JavaScript. Addirittura Eclipse prevede un pacchetto specializzato per JavaScript: Eclipse JavaScript Development Tools.
Figura 3. Esempio di ambiente di sviluppo avanzato Alcuni di questi ambienti di sviluppo prevedono un interprete o un compilatore integrato, o come più spesso viene chiamato, un JavaScript engine, ma naturalmente, in base alle nostre esigenze, possiamo sempre sfruttare l’engine di un comune browser. Fino a qualche anno fa JavaScript era un linguaggio esclusivamente interpretato. L’esigenza di performance sempre maggiori ha poi condotto alla creazione di engine che effettuassero una compilazione in tempo reale (JIT, Just In Time compilation) in bytecode o addirittura in codice macchina. Ecco alcuni tra i più importanti engine: • V8 di Google, utilizzato in Chrome e node.js; • Chakra di Microsoft, il motore di Internet Explorer; • SpiderMonkey di Mozilla montato su Firefox. Ritorna all'indice 1.04 - Strumenti di sviluppo nei browser Gli ambienti di sviluppo che prevedono un engine hanno in genere un debugger integrato che consente di analizzare il codice durante l’esecuzione. In assenza di un ambiente di sviluppo integrato, possiamo comunque ricorrere a un comune browser, dal momento che i più diffusi prevedono ormai un ambiente di debugging. Ad esempio, la seguente figura mostra una schermata dei DevTools di Chrome:
Figura 4. DevTools di Chrome Ritorna all'indice 1.05 - Console Naturalmente anche Internet Explorer e Firefox hanno ambienti analoghi ai DevTools di Chrome e tutti e tre i browser prevedono un ambiente per l’esecuzione diretta di codice JavaScript, la cosiddetta console. In questa finestra speciale possiamo scrivere codice JavaScript per vederne l’immediata esecuzione. Tutti gli esempi di codice che faremo nel corso della guida potranno essere eseguiti all’interno della console del vostro browser preferito per verificarne il funzionamento. La stessa console può essere utilizzata come ambiente per la visualizzazione dell’output di uno script, grazie all’omonimo oggetto console, come mostrato nella seguente figura:
Figura 5. Console di Chrome È molto comune utilizzare nel codice il metodo console.log per tenere traccia dell’evoluzione del programma o per verificare rapidamente il valore di oggetti e variabili. var a = 'pippo'; console.log('a = '+a); // stamperà in console: "a = pippo" Anche se per questo genere di verifiche è molto più indicato lavorare con le espressioni Watch e il debugger step-by-step (in figura 4), una stampa in console a volte risulta più immediata. Ritorna all'indice 1.06 - JS e HTML, librerie e codice JavaScript esterno JavaScript è nato ed rimasto un importante supporto ad HTML, specie con l’avvento dello standard HTML5. Per questo il browser rimane per esso l’ambiente d’uso privilegiato. Anche se troviamo JavaScript un po’ ovunque dai documenti PDF, nelle applicazioni desktop server e mobile, il browser e la “pagina Web” costituiscono ancora l’ambiente più comodo e disponibile per sperimentare con JavaScript. Inserire codice JavaScript in una pagina HTML Vediamo quindi come è possibile inserire codice JavaScript in una pagina HTML. Esistono essenzialmente tre modi per farlo: - inserire codice inline - scrivere blocchi di codice nella pagina - importare file con codice JavaScript esterno Vediamo in dettaglio Codice inline Il primo approccio, l’inserimento di codice inline, consiste nell’inserire direttamente le istruzioni JavaScript nel codice di un elemento HTML, assegnandolo ad un attributo che rappresenta un evento. Chiariamo il concetto con un esempio: CODICE: <button type="button" onclick="alert('Ciao!')">Cliccami</a> Abbiamo assegnato all’attributo onclick dell’elemento button la stringa alert('Ciao!'). L’attributo onclick rappresenta l’evento del clic sul pulsante del mouse, quindi in corrispondenza di questo evento verrà analizzato ed eseguito il codice JavaScript assegnato. Nel caso specifico verrà visualizzato un box con la scritta Ciao! Un altro approccio per l’inserimento di codice inline, utilizzabile però soltanto con i link, è quello mostrato nel seguente esempio: Cliccami CODICE: <a href="javascript:alert('Ciao!')">Cliccami</a> In questo caso indichiamo al browser di interpretare il link come la richiesta di esecuzione del codice JavaScript specificato invece che come un collegamento ad un’altra pagina. Blocchi di codice, il tag <script> L’approccio inline può risultare immediato perché mette direttamente in relazione il codice da eseguire con un elemento HTML. Risulta però scomodo quando il codice da eseguire è più complesso o abbiamo necessità di definire variabili e funzioni. In questi casi possiamo ricorrere al tag <script> per inserire blocchi di codice in una pagina HTML, come nel seguente esempio: <script>alert('Ciao!')<script> Quando il parser HTML del browser esamina la pagina, riconosce il tag <script> come blocco di codice e ne passa il contenuto all’engine JavaScript, che lo esegue. Possiamo inserire blocchi di codice (e i relativi tag <script>) nella sezione <head> o nella sezione <body> della pagina HTML. Nota: se il codice JavaScript interagisce con un elemento HTML, occorre assicurarsi che tale elemento sia già stato analizzato dal parser HTML: così il corrispondente oggetto sarà disponibile in memoria. Questo spiega il perché talvolta troviamo uno o più blocchi di codice JavaScript in fondo alla pagina prima della chiusura del tag </body>. Approfondiremo il concetto più avanti, quando parleremo degli oggetti del browser. Il tag <script> prevede alcuni attributi come language e type, nati per specificare il linguaggio di scripting contenuto al suo interno, ma oggi non più necessari poiché che JavaScript è il linguaggio di scripting standard nelle pagine HTML. JavaScript esterno Il terzo approccio, quello più consigliato, consiste nel collegare alla pagina HTML, codice JavaScript presente in un file esterno. Questa tencica permette di agganciare script e librerie in modo detto non intrusivo, con il vantaggio di una separazione netta tra la struttura del documento e il codice, come accade per i fogli di stile CSS, che separano struttura e presentazione. Per inserire un file JavaScript esterno ci serviamo sempre del tag <script> in cui specificando l’attributo src, come mostrato dal seguente esempio: <script src="codice.js"></script> Il riferimento al file JavaScript può essere relativo alla pagina HTML corrente oppure assoluto: <script src="http://www.server.com/codice.js"><script> Non è necessario in questo caso che il file JavaScript risieda sullo stesso server della pagina. Ritorna all'indice 1.07 - Commenti, punti e virgola e maiuscole Dopo aver tratteggiato i caratteri generali di JavaScript, ripassato un po’ di storia, fatto il punto sulle attuali prospettive, visti gli strumenti di sviluppo, possiamo iniziare ad esaminare con maggior dettaglio le caratteristiche di base del linguaggio. In questa lezione e nelle successive concentreremo l’attenzione su tipi di dato, variabili, istruzioni, array e funzioni. Ma prima facciamo alcune considerazioni sugli aspetti sintattici. Il punto e virgola in JavaScript Anzitutto ricordiamo il codice JavaScript è composto da una sequenza di istruzioni che viene interpretata ed eseguita dall’engine. In questa sequenza, ciascuna istruzione (o blocco di istruzioni) è delimitata da un punto e virgola (;), come nel seguente esempio: var x = 5; x = x + 1; Terminare un’istruzione con il punto e virgola non è obbligatorio in JavaScript: possiamo scrivere la sequenza precedente anche così: var x = 5 x = x + 1 In base alle specifiche del linguaggio, il parser effettua un inserimento automatico del punto e virgola. Tuttavia è buona norma inserire sempre la punteggiatura di terminazione per evitare ambiguità e risultati inattesi. Tra le altre cose, mettere il punto e virgola in fondo ad ogni istruzione ci consente di scrivere più istruzioni sulla stessa riga: var x = 5; x = x + 1; Se non siamo noi ad inserire le istruzioni sulla stessa riga potrebbero essere strumenti come i minificatori, cioè quei programmi che compattano il codice JavaScript togliendo spazi, ritorni a capo ed altri caratteri superflui per ridurre le dimensioni degli script. In questi casi l’assenza del punto e virgola porterebbe ad errori in fase di esecuzione. JavaScript è case sensitive Un altro aspetto sintattico da tenere in considerazione è il fatto che JavaScript è case sensitive, cioè fa distinzione tra maiuscole e minuscole nei nomi di istruzioni, variabili e costanti. Dimenticare questo aspetto può essere fonte di problemi quando, ad esempio, andiamo a dichiarare una variabile con il nome MiaVariabile e poi la richiamiamo con Miavariabile. Tanto più che normalmente un engine JavaScript non evidenzia alcun errore. Commenti in JavaScript Come ogni linguaggio, JavaScript prevede delle sequenze di caratteri per inserire commenti nel codice. Tutto ciò che viene marcato come commento non viene preso in considerazione dall’interprete JavaScript. Possiamo inserire due tipi di commenti nel codice: - commento per singola riga; - commento multiriga. Il commento a singola riga (inline) inizia con i caratteri // (doppio slash), come mostrato nel seguente esempio: // Questo è un commento var x = 5; Tutto ciò che si trova a destra dei caratteri // fino alla fine della riga verrà considerato commento. Questo ci consente di scrivere anche commenti a fianco alle istruzioni: var x = 5; // Questo è un commento A differenza di quanto accade per i punti e virgola, possiamo utilizzare i commenti inline senza preoccuparci troppo di come sarà miniaturizzato il codice: un buon minificatore tipicamente elimina direttamente tutti tipi di commenti. Il commento multiriga (multiline) prevede la sequenza iniziale /* (slash e asterisco) e si conclude con */ (asterisco e slash). Tutto ciò che viene inserito all’interno di questa coppia di terminazioni sarà considerato un commento, indipendentemente dal numero di righe utilizzate, in classico stile C-like: /* Questo è un commento sulla prima riga Questo è un commento sulla seconda riga Questa è l'ultima riga del commento */ var x = 5; Nota: è bene tener presente che, naturalmente, non possiamo utilizzare all’interno di questo tipo di commento la sequenza di caratteri */, perché verrebbe interpretata come fine commento. In particolare vedremo che bisogna fare attenzione alle Espressioni Regolari in cui la sequenza */ fa parte del linguaggio. Spazi bianchi Gli spazi bianchi in JavaScript non assumono significati particolari nelle espressioni e possiamo utilizzarli per aumentare la leggibilità del codice. Unica eccezione va fatta per gli spazi all’interno delle stringhe (che vedremo). Ritorna all'indice 1.08 - Stringhe, numeri e altri tipi di dati JavaScript JavaScript prevede cinque tipi di dato primitivi, numeri, stringhe, booleani, null e undefined, e un un tipo di dato complesso, gli oggetti. Tutti gli altri elementi previsti dal linguaggio, come ad esempio gli array, le espressioni regolari, le funzioni, sono in realtà oggetti. A dire il vero, anche i tipi di dato “primitivi” hanno degli oggetti corrispondenti con relative proprietà e metodi. JavaScript converte automaticamente un tipo primitivo nel corrispondente oggetto quando utilizziamo un suo metodo o una sua proprietà. Consideriamo ad esempio il seguente codice: var nomeMaiuscolo = "Andrea".toUpperCase(); A partire dal tipo primitivo stringa, JavaScript crea il corrispondente oggetto String e invoca il metodo toUppercase() per ottenere la versione in caratteri maiuscoli della stringa. Questo contribuisce a creare non poca confusione nella distinzione tra dati primitivi e oggetti, tanto che non sono in pochi a semplificare sostenendo che in realtà in JavaScript tutto è oggetto. In questa e nelle prossime lezioni ci occuperemo dei tipi di dato primitivi di JavaScript rimandando a quando acquisiremo le nozioni fondamentali sugli oggetti per approfondire la questione e vedere i principali metodi di gestione dei vari tipi di dato. Stringhe in JavaScript Una stringa in JavaScript è una sequenza di caratteri delimitata da doppi o singoli apici. Le seguenti sono esempi di stringhe: "stringa numero uno" 'stringa numero due' Non c’è una regola per stabilire quale delimitatore utilizzare. L’unica regola è che il delimitatore finale deve essere uguale al delimitatore iniziale. Questo ci consente di scrivere stringhe come le seguenti senza incorrere in errori: "l'altro ieri" "questa è una 'stringa'" Un tipo speciale di stringa è la stringa vuota, cioè una stringa senza caratteri. Essa può essere rappresentata indifferentemente come "" oppure ''. Per inserire caratteri speciali all’interno di una stringa si fa ricorso al carattere di escaping \ (backslash). Ad esempio, per inserire un ritorno a capo possiamo utilizzare la sequenza \n, come mostrato nel seguente esempio: "Ieri pioveva.\nOggi c'è il sole." La stampa di questa stringa avrà il seguente risultato: Ieri pioveva. Oggi c'è il sole. Tra i caratteri speciali che possiamo inserire tramite backslash c’è lo stesso backslash, come nel seguente esempio: "La sequenza \\n indica il ritorno a capo" Il primo backslash è il carattere di escaping mentre il secondo è il carattere da inserire nella stringa. Il risultato sarà quindi: La sequenza \n indica il ritorno a capo Questo meccanismo ci consente di inserire lo stesso delimitatore di stringa all’interno della stringa: 'l\'altro ieri' "questa è una \"stringa\"" Il delimitatore preceduto dal backslash non verrà considerato come delimitatore ma come un normale carattere. È anche possibile inserire caratteri Unicode in una stringa utilizzando la sequenza di escaping \u seguita dal codice esadecimale del carattere. Ad esempio, la seguente stringa contiene al suo interno il carattere ©: "HTML.it\u00A9 2013" Numeri in JavaScript JavaScript ha un unico tipo di dato numerico, cioè non c’è distinzione formale, ad esempio, tra intero e decimale. Internamente tutti i valori numerici sono rappresentati come numeri in virgola mobile, ma se non è specificata la parte decimale il numero viene trattato come intero. I seguenti sono esempi di rappresentazione di numeri interi: var interoNegativo = -10; var zero = 0; var interoPositivo = 123; Per rappresentato un numero non intero facciamo ricorso al punto come separatore della parte decimale: var numeroDecimale = 0.52; var altroNumeroDecimale = 12.34; var decimaleNegativo = -1.2; var decimaleZero = 1.0; È possibile rappresentare i valori numerici secondo la notazione scientifica: var primoNumero = 12e3; // equivalente a 12 x 103 cioè 12.000 var secondoNumero = 3.5e-4; // equivalente a 3.5 x 10-4 cioè 0,00035 Oltre alla classica notazione in base dieci, possiamo rappresentare i numeri in notazione ottale ed esadecimale: var numeroOttale = 0123; //equivalente a 83 var numeroEsadecimale = 0x123; //equivalente a 291 Un numero ottale inizia con lo zero mentre un numero esadecimale inizia con zero e x (0x). L’insieme dei numeri rappresentabili in JavaScript cade nell’intervallo compreso tra -1.79769*10e308 e 1.79769*10e308, con una precisione pari a 5*10-324. Ogni valore che va al di fuori dell’intervallo rappresentabile non genera un’eccezione ma viene rappresentato da due valori speciali: - Infinity, detto anche infinito positivo, - -Infinity, detto infinito negativo. Ogni valore che ha una precisione maggiore di quella rappresentabile viene considerata uguale a zero. Un altro valore numerico speciale è NaN, acronimo di Not a Number, che indica un valore numerico non definito. Nel seguente esempio il valore della variabile x dopo l’assegnamento è NaN: var x = x + 1; I tipi di dato null, undefined e booleano JavaScript prevede due tipi di dato speciali per rappresentare valori nulli e non definiti. Il tipo di dato null prevede il solo valore null, che rappresenta un valore che non rientra tra i tipi di dato del linguaggio, cioè non è un valore numerico valido, né una stringa, né un oggetto. È possibile assegnare il valore null ad una variabile come nel seguente esempio: var x = null; Da notare che il valore null è diverso dal valore numerico 0 o dalla stringa vuota. Infatti, questi ultimi appartengono ai tipi numero e stringa, mentre null è un tipo a se stante. Il tipo di dato undefined rappresenta un valore che non esiste. Anche questo tipo di dato contiene un solo valore: undefined. Questo è il valore di una variabile non inizializzata, a cui non è stato assegnato nessun valore, nemmeno null. Il tipo di dato booleano prevede due soli valori: true (vero) e false (falso). Tipizzazione debole JavaScript è un linguaggio a tipizzazione debole o dinamica. Ciò significa che quando dichiariamo una variabile, non ne specifichiamo il tipo di dato e che il tipo di dato che può contenere una variabile può cambiare durante l’esecuzione dello script. Quando dichiariamo una variabile senza specificare un valore, a questa viene assegnato il valore undefined. Il suo valore può cambiare tramite le nostre istruzioni ed assumere tipi di dato diversi, come nel seguente esempio: var miaVariabile; miaVariabile = 1; miaVariabile = null; miaVariabile = "uno"; miaVariabile = true; L’assegnamento di un valore può comunque avvenire direttamente nella dichiarazione: var miaVariabile = 0; Ritorna all'indice APPENDICE - ESEMPI ES_058: un semplice menù verticale in javascript che se cliccato mostra i sottolivelli ES_064: un bellissimo menù verticale che mostra i sottomenù sulla sua barra di navigazione ES_087: menù verticale creato da immagini che si apre con un clic. Mancano le immagini di sfondo, ma è facilmente configurabile ES_185: menù a comparsa dall'alto che se cliccato si apre e si richiude al prossimo clic ES_210: quattro tabelle leggibili attraverso un menù simile ad uno schedario. nel file zip ci sono altri tre script simili ma con diversa grafica ES_211: menù con categorie e sottocategorie a scomparsa ES_239: menù in verticale con piu livelli. Non è ancora configurato, ma potrebbe essere uno spunto di partenza ES_245: menù ad albero. basta cliccare per aprirlo e chiuderlo ES_307: menù a scomparsa. Quando uscite dall'area del menu scompare. Si crea tramite immagini ES_349: menù a tendina a cascata dall'alto se cliccato. Quando posizioniamo il mouse sul titolo appare la descrizione sulla statusbar ES_362: una serie di menù che se cliccati mostrano il testo nascosto e viceversa ES_397: menù da albero simile ad esplora risorse windows ES_552: menù tendina verticale che scompare quando usciamo dall'area clic ES_562: menù creato da un semplice form select ES_585: menù a tendina a scomparsa con sottocategorie. (Il numero 585 - 586 - 587 - 588 fanno parte della stessa famiglia) ES_586: menù orizzontale e verticale a scomparsa con sottocategorie. (Il numero 585 - 586 - 587 - 588 fanno parte della stessa famiglia) ES_587: menù a tendina con sottocategorie. Configurato per cliccare su immagini(bandiere), il campo dei sottomenu è semitrasparente . (Il numero 585 - 586 - 587 - 588 fanno parte della stessa famiglia) ES_588: menù orizzontale con sottomenù che se cliccati si dividono fra sopra e sotto la barra del menu. (Il numero 585 - 586 - 587 - 588 fanno parte della stessa famiglia) ES_620: menù che assomiglia alla toolbar di Windows ES_704: menù su immagine map. Una volta cliccato il link l'immagine cambia gradualmente. Verificare i vari collegamenti sulla stessa immagine (mappa immagini) ES_758: menù rotante che cambia con i clic sui comandi ES_770: script che crea un menù laterale da sinistra a scomparsa ES_774: menù a comparsa con il passaggio mouse ES_794: semplice menù a comparsa con un clic e scomparsa con un altro click ES_808: menù ad albero che mostra le sottocategorie con un clic. Nel file .zip ci sono altri esempi più complessi ES_809: un semplice menù verticale con link in form ES_809: un semplice menù verticale con link in form ES_852: menù a comparsa laterale. Se posizioniamo il mouse sopra l'immagine appare il menù ES_853: menù con link simili a risorse del computer di Windows. Dal n°853 al n°860 sono varianti dello stesso script ES_854: menù con link simili a risorse del computer di Windows. Dal n°853 al n°860 sono varianti dello stesso script ES_855: menù con link simili a risorse del computer di Windows. Dal n°853 al n°860 sono varianti dello stesso script ES_856: menù con link simili a risorse del computer di Windows. Dal n°853 al n°860 sono varianti dello stesso script ES_857: menù con link simili a risorse del computer di Windows. Dal n°853 al n°860 sono varianti dello stesso script ES_858: menù con link simili a risorse del computer di Windows. Dal n°853 al n°860 sono varianti dello stesso script ES_859: menù con link simili a risorse del computer di Windows. Dal n°853 al n°860 sono varianti dello stesso script ES_860: menù con link simili a risorse del computer di Windows. Dal n°853 al n°860 sono varianti dello stesso script ES_926: script che genera un menù a discesa [in PHP] ES_948: menù a tendina ES_982: script che crea un menu tipo frames che segue la pagina se ci muoviamo in verticale. Molto interessante