AD

Dati primitivi e dati di riferimento in JavaScript

In JavaScript, esistono due tipi di dati: i dati primitivi (primitive) e i dati di riferimento (reference). Comprendere le differenze tra questi due tipi è fondamentale per scrivere codice efficiente e comprenderne il comportamento.

In questa pagina, esploreremo le caratteristiche dei dati primitivi e dei dati di riferimento, analizzando come vengono memorizzati e manipolati.

Dati primitivi in JavaScript

I dati primitivi sono i tipi di dati fondamentali in JavaScript. Sono immutabili, il che significa che, una volta creati, non possono essere modificati. I dati primitivi vengono memorizzati direttamente nello spazio di memoria assegnato alla variabile.

I cinque tipi di dati primitivi in JavaScript sono:

  • Number: Rappresenta i numeri, sia interi che decimali. Ad esempio: let numero = 42;

  • String: Rappresenta una sequenza di caratteri, racchiusi tra apici singoli o doppi. Ad esempio: let nome = "Alice";

  • Boolean: Rappresenta un valore di verità, true o false. Ad esempio: let èStudente = true;

  • Null: Rappresenta un valore nullo o vuoto. Ad esempio: let risultato = null;

  • Undefined: Rappresenta una variabile non inizializzata. Ad esempio: let valore;

let numero = 10; let messaggio = "Ciao!"; let esito = true; let prezzo = null; let descrizione;

Dati di riferimento in JavaScript

I dati di riferimento, a differenza dei dati primitivi, vengono memorizzati nello spazio di memoria separato dallo spazio assegnato alla variabile. La variabile conterrà un riferimento a quel luogo di memoria piuttosto che il valore effettivo. I dati di riferimento includono oggetti, array, funzioni e altri oggetti complessi definiti dall'utente.

Esempi di dati di riferimento:

let persona = { nome: "Marco", eta: 30 }; let colori = ["rosso", "verde", "blu"]; function saluta(nome) {    console.log("Ciao, " + nome + "!"); }

Nell'esempio, la variabile persona contiene un riferimento a un oggetto con proprietà nome ed età, mentre colori contiene un riferimento a un array di colori. La variabile saluta contiene un riferimento a una funzione.

Passaggio per valore vs passaggio per riferimento

Una differenza fondamentale tra dati primitivi e dati di riferimento riguarda il passaggio di questi dati a funzioni o variabili. Quando passiamo un dato primitivo a una funzione o lo assegniamo a una variabile, viene passato per valore, ovvero viene creato un duplicato del dato. Modificando il dato all'interno della funzione o della variabile non influenzerà il valore originale.

D'altro canto, quando passiamo un dato di riferimento a una funzione o lo assegniamo a una variabile, viene passato per riferimento. In altre parole, la funzione o la variabile avrà un riferimento allo stesso oggetto in memoria. Modificando l'oggetto all'interno della funzione o della variabile influenzerà il valore originale.

Esempio di passaggio per valore e passaggio per riferimento:

// Passaggio per valore let a = 5; function raddoppia(numero) {    numero = numero * 2;    console.log(numero); // Stampa: 10 } raddoppia(a); console.log(a); // Stampa: 5 (non è stato modificato) // Passaggio per riferimento let persona = { nome: "Luca", eta: 25 }; function cambiaEta(p) {    p.eta = 30; } cambiaEta(persona); console.log(persona); // Stampa: { nome: "Luca", eta: 30 } (è stato modificato)

Quando utilizzare dati primitivi o dati di riferimento

È importante scegliere tra dati primitivi e dati di riferimento a seconda delle esigenze del nostro codice. I dati primitivi sono più efficienti in termini di memoria e possono essere copiati facilmente senza influenzare i dati originali. I dati di riferimento, d'altra parte, consentono di gestire strutture dati complesse e oggetti con proprietà e metodi.