2.1 Variabili in JavaScript
JavaScript è un linguaggio di programmazione flessibile e dinamico, che supporta diversi modi per dichiarare
variabili e lavorare con i tipi di dati. In questa lezione esamineremo tre modi principali per dichiarare variabili
(var
, let
, const
) e i principali tipi di dati primitivi in JavaScript.
Variabili in JavaScript
JavaScript è un linguaggio con tipizzazione dinamica. Le variabili in esso non hanno tipo. A qualsiasi variabile si può assegnare qualsiasi valore in qualsiasi momento (ma ci sono sfumature).
Per creare una variabile bisogna scrivere una costruzione del tipo:
var name;
Una variabile può essere subito assegnata a un valore:
var name = value;
Ma in realtà, in JavaScript esistono ben tre modi per creare variabili. Ora ne parleremo più in dettaglio.
Operatore var
Le variabili dichiarate con var
hanno uno scope funzionale o globale. Sono soggette a
"hoisting", il che significa che la loro dichiarazione viene spostata all'inizio del loro scope di appartenenza durante l'esecuzione del codice.
Esempio:
console.log(x); // undefined
var x = 10;
console.log(x); // 10
In questo esempio la variabile x
viene sollevata all'inizio del suo scope, quindi
il primo console.log
stampa undefined
.
In altre parole, il "hoisting" trasforma il nostro codice in questo:
var x;
console.log(x); // undefined
x = 10;
console.log(x); // 10
Operatore let
Gli sviluppatori volevano tanto cambiare il comportamento dell'operatore var
, ma temevano di rompere milioni di righe di codice già scritte.
Così hanno semplicemente inventato un altro operatore, che crea anche variabili, ma con un comportamento leggermente diverso.
Le variabili dichiarate con let
hanno uno scope di blocco. Ciò significa che sono disponibili solo all'interno
del blocco di codice (solitamente tra parentesi graffe {}) in cui sono dichiarate. let
non è soggetto a hoisting come var
.
Esempio:
La variabile y
esiste solo all'interno del blocco if
.
if (true) {
let y = 20;
console.log(y); // 20
}
console.log(y); // ReferenceError: y is not defined
Operatore const
Le variabili dichiarate con const
hanno anch'esse uno scope di blocco e non possono essere riassegnate dopo
la loro inizializzazione. Tuttavia ciò non rende immutabili gli oggetti dichiarati con const
— le loro proprietà possono essere modificate.
Quindi la variabile non si può cambiare, ma l'oggetto a cui si riferisce — sì. Volevano fare meglio, invece è venuto fuori come sempre.
Esempio:
In questo esempio la costante x
non può essere riassegnata, ma l'oggetto obj
può essere modificato.
const x = 30;
console.log(x); // 30
x = 40; // TypeError: Assignment to constant variable.
const obj = { name: 'Alice' };
obj.name = 'Bob'; // Questo è permesso
console.log(obj.name); // Bob
2.2 Tipi di dati primitivi
JavaScript supporta diversi tipi di dati primitivi, che rappresentano dei valori semplici, non sono oggetti complessi.
Tipo Number
Rappresenta qualsiasi valore numerico, inclusi numeri interi e numeri a virgola mobile.
Esempi:
let num = 42;
let pi = 3.14;
Tipo String
Rappresenta dati testuali: stringhe, caratteri, emoji. Tutto ciò che assomiglia a stringhe — è qui.
Esempi:
let greeting = "Hello, world!";
let facepalm = "🤦";
let char = 'x';
Tipo Boolean
Rappresenta valori logici true
o false
.
let isTrue = true;
let isFalse = false;
Tipo Null
Rappresenta l'assenza intenzionale di un valore.
let empty = null;
Se il tipo consiste di un solo valore che significa l'assenza di valore, allora forse è più un valore unico che un tipo unico?
Tipo Undefined
Rappresenta il valore di una variabile che è stata dichiarata, ma non è stata inizializzata.
let notAssigned;
console.log(notAssigned); // undefined
2.3 Confronto tra var, let e const
Facciamo un ultimo confronto tra i nostri tre modi di creare variabili:
Caratteristica | var | let | const |
---|---|---|---|
Scope | Funzionale o globale | Blocco | Blocco |
Hoisting (Solleva) | Sì, ma l'inizializzazione non viene sollevata | No | No |
Riassegnazione | Sì | Sì | No |
Inizializzazione | Non obbligatoria | Non obbligatoria | Obbligatoria |
JavaScript offre diversi modi per dichiarare variabili, ognuno dei quali ha le sue peculiarità e applicabilità
a seconda del contesto. var
è usato meno frequentemente a causa delle sue peculiarità di hoisting e scope globale.
let
e const
sono preferiti nel moderno JavaScript per il loro scope di blocco e controllo sulla riassegnazione.
I tipi di dati primitivi permettono di lavorare con le strutture di dati di base, fornendo la funzionalità fondamentale necessaria per creare applicazioni complesse. Ed è il linguaggio più popolare al mondo :)
GO TO FULL VERSION