Oltre ai già intravisti HTML e PHP, un altro linguaggio importate per lo sviluppo (e il mantenimento) di siti web è sicuramente JavaScript, e spesso abbreviato con JS. E’ un linguaggio di programmazione multi paradigma orientato agli eventi, comunemente utilizzato nella programmazione Web lato client (esteso poi anche al lato server) per la creazione, in siti web e applicazioni web, di effetti dinamici interattivi tramite funzioni di script invocate da eventi innescati a loro volta in vari modi dall’utente sulla pagina web in uso.
Le origini di JavaScript
JavaScript è un linguaggio di programmazione nato in origine per il web. Brendan Eich, il creatore di JavaScript, si ritrovò nel 1995 a lavorare per Netscape. Il project manager assegnò a Brendan un compito in apparenza impossibile da portare a termine: creare un linguaggio di programmazione che funzionasse nel browser Netscape Navigator.
Brendan Eich concepì JavaScript (originariamente denominato Mocha), sviluppato in soli 10 giorni. Il risultato di quei 10 giorni di sviluppo? Un linguaggio strano, costellato di cose a loro volta strane. Da quel momento JavaScript è diventato il linguaggio universale del web, anche se non ha mai goduto di una reputazione stellare.
A cosa serve
Immagina di avere un bottone su una pagina web. Dopo aver premuto il bottone vuoi che l’utente veda un altro elemento nella pagina, che prima era nascosto. Come pensi si possa ottenere un effetto del genere? Con JavaScript! In altre parole, ogni pagina web costruita con puro HTML è inanimata (escludendo le animazioni CSS). Per aggiungere effetti ed interazioni è necessario lanciare JavaScript nella mischia.
Questo linguaggio viene utilizzato anche fuori dal suo contesto naturale, rimasto confinato per quasi 2 decenni nei browser. Poi è nato Node.js, il motore che fa girare JavaScript anche fuori dal browser. Ma nonostante l’utilizzo di Node.js sia cresciuto il campo principale di applicazione rimane comunque il browser. Se dovessi rispondere alla domanda “ma a cosa serve davvero JavaScript?” direi che il motivo principale è uno: la possibilità di creare o rimuovere elementi HTML dinamicamente.
Questo linguaggio trova il ‘impiego’ anche in:
- Giochi basati su browser web – sia giochi 2D che 3D
- Sviluppo di applicazioni mobili – vantaggioso perché è agnostico rispetto alle piattaforme mobili
- Presentazioni – ad esempio, la creazione di diapositive animate basate sul web
Sicurezza
Anche se JavaScript è ampiamente accettato e utilizzato per lo sviluppo web, presenta delle vulnerabilità ben note. Uno dei più comuni attacchi informatici introdotti attraverso le vulnerabilità di JavaScript è l’attacco cross-site scripting (XSS). I criminali informatici ricorrono agli attacchi XSS per ottenere accesso e rubare informazioni sull’identità. Per ridurre al minimo gli exploit, è fondamentale testare e rivedere il codice durante lo sviluppo. I metodi di testing come il test di sicurezza statico e dinamico delle applicazioni (SAST e DAST) aiutano a identificare le vulnerabilità in tutti i punti del ciclo di vita dello sviluppo del software.
Secondo gli analisti della sicurezza di Cloud Defense, SAST controlla il vostro codice per verificare che non violi le regole di sicurezza e confronta le vulnerabilità trovate tra il branch sorgente e quello di destinazione. Riceverete una notifica se le dipendenze del vostro progetto sono affette da vulnerabilità.
Componenti di Base di JavaScript
Come per altri linguaggi di programmazione, anche JavaScript usa le variabili per identificare le posizioni in cui vengono memorizzati i dati. Le variabili possono essere globali (accessibili da qualsiasi funzione nel codice) o locali, note anche come block-scoped (accessibili solo nel blocco in cui sono dichiarate). Le variabili possono contenere sia valori fissi (costanti note come literal) che valori modificabili. JavaScript ha una sintassi particolare per dichiarare (creare) costanti e variabili, e assegnare loro dei valori.
Dichiarare una Costante
Le costanti vere sono create utilizzando la dichiarazione const. Const crea delle costanti di sola lettura, immutabili e con un block-scoped (“block-scoped” significa che la costante non è accessibile dall’esterno del suo blocco dichiarato).
Un esempio di utilizzo di const per creare una costante è:
const GOLDEN_RATIO = 1.618; // create a constant named GOLDEN_RATIO with value 1.618
Notate l’uso di lettere maiuscole per nominare la costante; questa è una convenzione di denominazione comunemente accettata, sebbene non sia obbligatoria. I nomi delle variabili, inclusi quelli delle costanti, devono iniziare con una lettera (minuscola o maiuscola), il carattere di sottolineatura (_) o il simbolo del dollaro ($). Sono sensibili alle maiuscole e alle minuscole, quindi attenti a ricordare i nomi che assegnate alle vostre variabili.
Alle costanti, a differenza delle variabili, deve essere assegnato un valore al momento della creazione. La seguente dichiarazione restituirà un errore:
const GOLDEN_RATIO;
Dichiarare una Variabile
Le variabili sono dichiarate utilizzando la parola chiave var. Non è necessario che abbiano un valore assegnato al momento della dichiarazione, anche se è permesso farlo e viene fatto spesso. La parola chiave var ha uno scopo globale piuttosto che di blocco (a meno che non sia in una funzione, allora ha uno scopo di funzione).
var variable1; // declare a variable called variable1
var variable2 = "2022"; // declare a string variable called variable2 and initialize with value 2022
variable1 = "Thank goodness it's" // assign string value to previously declared variable variable1
console.log(variable1 + " " + variable2); // display "Thank goodness it's 2022"
Notate che le dichiarazioni in JavaScript devono finire con un punto e virgola. Potete creare commenti utilizzando //
– JavaScript ignora qualsiasi cosa tra // e la fine della linea.
Le variabili possono contenere una varietà di tipi di dati, tra cui numeri, stringhe e oggetti. L’assegnazione delle variabili in JavaScript è dinamica. Quindi potete assegnare una variabile ad un diverso tipo di dati nello stesso codice.
Le funzioni
Pensate alle funzioni come ai cavalli di battaglia di JavaScript. Sono blocchi di codice che eseguono compiti specifici. Se avete familiarità con procedure e subroutine in altri linguaggi di programmazione, riconoscerete immediatamente le funzioni. Le funzioni sono definite utilizzando la seguente sintassi:
function function_name(parameter list) {
// tasks to be performed
}
Definire le funzioni è solo il primo passo; in seguito dovrete invocare le funzioni utilizzando ()
nel codice.
Come sempre questo vuole essere un articolo guida: per ulteriori approfondimenti si rinvia a siti e a portali specifici.