Zusammenfassungen
Universitätsnotizen im Markdown-Format aus Obsidian.
JavaScript
download MD herunterladenJavaScript (JS) è il linguaggio di scripting fondamentale del Web. Nato nel 1996 in Netscape (chiamato inizialmente LiveScript), è oggi standardizzato come ECMAScript (ES).
Introduzione e Utilizzo
JavaScript è un linguaggio interpretato, dinamico e debolmente tipizzato. Sebbene sia nato per i browser (Client-Side), oggi gira ovunque (Server con Node.js, Database come CouchDB, App Desktop con Electron).
Vantaggi Lato Client
- Performance: Riduce il carico sul server eseguendo calcoli sul dispositivo dell'utente.
- Interattività: Risposta immediata agli eventi (click, input) senza ricaricare la pagina.
Inserimento nella Pagina
- Esterno (Best Practice): File separato
.js.<script src="script.js"></script> - Embedded: Blocco script nell'HTML.
<script> console.log("Ciao!"); </script> - Inline (Sconsigliato): Negli attributi HTML.
<button onclick="alert('Click!')">Premi</button>Tipi di Dati e Variabili
Tipi Primitivi
JS ha 6 tipi di dati fondamentali:
number: Interi e decimali (42,3.14). Include valori speciali comeNaN(Not a Number) eInfinity.string: Testo tra apici singoli o doppi ("Ciao",'Mondo').boolean:trueofalse.undefined: Valore di una variabile dichiarata ma non inizializzata.null: Assenza intenzionale di valore (è un oggetto per un bug storico).symbol(Introdotto in ES6, per identificatori unici).Variabili e Scope
- Esterno (Best Practice): File separato
var: Scope di funzione (o globale). Soggetta a Hoisting (può essere usata prima della dichiarazione, risultandoundefined).let/const(ES6+): Scope di blocco ({}).constnon può essere riassegnata.var x = 10; if (true) { var x = 20; // Modifica la x globale! } console.log(x); // 20
let y = 10; if (true) { let y = 20; // Nuova variabile locale al blocco } console.log(y); // 10
> [!WARNING] Hoisting
> Con `var`, le dichiarazioni vengono "spostate" in cima alla funzione.
> ```javascript
> console.log(a); // undefined (non errore!)
> var a = 5;
> ```
## Operatori e Uguaglianza
### Coercizione (Type Coercion)
JS cerca di convertire automaticamente i tipi.
```javascript
console.log(5 == "5"); // true (converte stringa in numero)
console.log(0 == false); // true
console.log("" == 0); // true
Uguaglianza Stretta (===)
Confronta sia il valore che il tipo. Usare sempre questo.
console.log(5 === "5"); // false
console.log(0 === false); // false
Operatori Logici e Ternario
- AND (
&&): Ritorna il primofalsoo l'ultimo valore. - OR (
||): Ritorna il primoveroo l'ultimo valore. - Ternario (
? :):condizione ? vero : falso.Oggetti
Un oggetto è una collezione di coppie chiave-valore.
// Object Literal var persona = { nome: "Mario", eta: 30, saluta: function() { return "Ciao sono " + this.nome; } };
// Accesso proprietà console.log(persona.nome); // Dot notation console.log(persona["eta"]); // Bracket notation (utile per chiavi dinamiche)
// Modifica dinamica persona.lavoro = "Developer"; // Aggiunge nuova proprietà delete persona.eta; // Rimuove proprietà
## Funzioni
Le funzioni sono "cittadini di prima classe" (possono essere passate come variabili).
### Dichiarazione
```javascript
function somma(a, b) {
return a + b;
}
Funzione Anonima (Function Expression)
var quadrato = function(x) {
return x * x;
};
Scope e Closure
Le funzioni interne "vedono" le variabili della funzione esterna.
function esterno(x) {
return function interno(y) {
return x + y; // 'x' è ricordata (Closure)
};
}
var aggiungi5 = esterno(5);
console.log(aggiungi5(10)); // 15
Array
Liste ordinate di valori (anche misti).
var lista = ["mela", "pera", 42];
lista.push("banana"); // Aggiunge in fondo
lista.pop(); // Rimuove l'ultimo
lista.length; // Lunghezza (3)
// Iterazione
for (var i = 0; i < lista.length; i++) {
console.log(lista[i]);
}
Oggetti Globali Utili
Math:Math.random(),Math.floor(),Math.max().Date: Gestione date (new Date()).JSON: Parsing e serializzazione dati.var str = JSON.stringify({a: 1}); // '{"a":1}' var obj = JSON.parse(str); // {a: 1}Window: L'oggetto globale del browser (contienedocument,alert,console).