GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||
GeezerVison is showing it.wikiversity.org — JavaScript - Wikiversità
PremessaJavaScript è un linguaggio di programmazione lato-client, orientato agli oggetti, che aggiunge funzioni alle pagine web. Il codice JavaScript può essere scritto direttamente all’interno del tag <script> oppure importato da un file .js esterno, tramite l’attributo src del tag <script`. Il file può essere locale o provenire da una CDN.[1]. Questa lezione tratta perciò del linguaggio JavaScript interpretato lato-client, incluso in pagine HTML. IntroduzioneFu originariamente sviluppato da Brendan Eich della Netscape Communications. Si completa con HTML e con CSS (questi ultimi non sono linguaggi di programmazione, ma sono linguaggi di formattazione delle pagine web visibili su internet). Concetti baseIntegrazione in una pagina HTMLI comandi JavaScript vengono interpretati dentro all'apposito tag <!DOCTYPE HTML> <html> <head> <title>Esempi</title> </head> <body> <h1>Esempio 1</h1> <script> // Spazio per JavaScript var a = "Ciao"; var b = ", Mondo!"; console.log( a + b ); </script> </body> </html> È possibile richiamare anche uno script su un file esterno. Il file deve contenere solo codice JavaScript ed è bene che abbia estensione <script src="prova.js"></script> Nota:
I prossimi esempi di codice saranno implicitamente in un tag Console di debugMolti browser-web moderni come Mozilla Firefox o Chromium includono una console di debug, utile per l'analisi del codice di una pagina web. Ad esempio su Mozilla Firefox la console di debug si apre con il tasto La console di debug mostra errori normalmente non visibili durante la semplice navigazione. CommentiI commenti non vengono considerati dall'interprete JavaScript. Così come per qualsiasi software è buona abitudine usare i commenti multi-riga all'inizio del file per riassumere cosa fa il codice, insieme al nome dell'autore e la licenza del proprio codice. /* Codice che fa cose Autore: Mario Rossi Licenza: GNU GPL */ // Questa variabile serve, credo var a = 4; VariabiliJavaScript non è un linguaggio a tipizzazione forte: alle variabili non si specifica a priori il tipo e può cambiare nel corso del programma. Solitamente la prima istanziazione si effettua tramite Le variabili sono case-sensitive. var a = 'ciao'; console.log( a ); a = 1; console.log( a ); a = true; console.log( a ); a = [1, 2, 3, 4]; console.log( a ); Qualsiasi variabile istanziata in una pagina ha visibilità globale, al contrario qualsiasi variabile istanziata in una funzione ha visibilità locale. FunzioniI seguenti codici hanno il medesimo risultato: Funzione classica: var N = 2; function square(n) { return n * n; } console.log( square(N) ); Funzione anonima: var N = 2; var square = function (n) { return n * n; }; console.log( square(N) ); Funzione anonima auto-richiamata (avanzata): var N = 2; console.log( function (n) { return n * n; }(N) ); Notazione a cammelloSolitamente le funzioni e le variabili JavaScript sono chiamate secondo la notazione a cammello: function doSomethingIncredible(superVariable) { return ! superVariable; } var okWikiversity = doSomethingIncredible(false); console.log( okWikiversity ); Output: Oggetti e prototipiLa programmazione orientata agli oggetti in JavaScript può risultare un po' caotica, questo perché il concetto di classe in JavaScript è sostituita dalla possibilità di creare oggetti manualmente o tramite "prototipi polimorfi". Un oggetto creato manualmente: var marioRossi = { name: 'Mario Rossi', score: 0, goal = function () { this.score++; } }; marioRossi.goal(); console.log( marioRossi.score ); Output: O ancora manualmente: var marioRossi = {name: 'Mario Rossi', score: 0}; // Appendo un metodo marioRossi.goal = function() { this.score++; } marioRossi.goal(); console.log( marioRossi.score ); Output: Un oggetto creato tramite un prototipo: // Questa funzione costruirà il mio oggetto function GamePlayer(name) { this.name = name; this.score = 0; } // Istanzio un nuovo oggetto col costruttore var marioRossi = new GamePlayer('Mario Rossi'); // Appendo un nuovo metodo al prototipo GamePlayer.prototype.goal = function () { this.score++; }; marioRossi.goal(); console.log( marioRossi.score ); Output: Si può anche modificare uno dei prototipi predefiniti per appenderci metodi personalizzati: // Appendo il metodo sandwich() nel prototipo String String.prototype.sandwich = function (bread) { return bread + this + bread; } console.log( 'Wikiversità'.sandwich('@@') ); Output: ApprofondimentoJavaScript viene sempre più utilizzato anche in ambito web per siti e applicazioni, tuttavia sotto l'aspetto SEO la resa non sempre è ottimale. In generale, pero', seguendo una serie di good practices è possibile farne uso anche in ottica motori di ricerca, che nel frattempo si sono evoluti e riescono a leggere ed interpretare, ad oggi, anche i contenuti scritti in questo linguaggio[2]. JavaScript in passato non era eseguito dai bot dei motori di ricerca., quindi il testo generato dinamicamente non veniva indicizzato. Ultimamente Google ha fatto notevoli progressi nell'interpretazione di JavaScript in modo massivo (durante il crawling delle pagine), resta comunque necessario seguire alcuni accorgimenti per ottimizzare l'indicizzazione.[3] New (approfondimento)Dato che una funzione e un costruttore per l'interprete JavaScript sono la stessa cosa, è importante ricordarsi di esplicitare la parola chiave In questo esempio stampo in console un oggetto correttamente creato col costruttore, e poi ciò che otterrei senza // Definisco un costruttore function GamePlayer(nome) { this.nome = nome; this.score = 0; // Per scopo didattico la funzione ha valore di ritorno return "Eh? Mi utilizzi come funzione?"; } console.log( new GamePlayer('Mario Rossi') ); console.log( GamePlayer('Mario Rossi') ); Output: | ||||||||||||||||||||||||||||
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. | ||||||||||||||||||||||||||||