Inizializzatori di Oggetti e Array in JavaScript

Concetti Chiave
  • Gli inizializzatori di oggetti e array sono espressioni che creano nuovi oggetti o array in JavaScript.
  • Gli inizializzatori di oggetti e array possono contenere espressioni complesse per definire i valori delle proprietà e degli elementi.
  • Gli inizializzatori di oggetti e array possono essere annidati.

Inizializzatori di Oggetti e Array

Gli inizializzatori di oggetti e array sono espressioni il cui valore è un oggetto o array appena creato. Queste espressioni inizializzatrici sono talvolta chiamate letterali di oggetti e letterali di array. A differenza dei veri letterali, tuttavia, non sono espressioni primarie, perché includono un numero di sottoespressioni che specificano valori di proprietà ed elementi. Gli inizializzatori di array hanno una sintassi leggermente più semplice, e inizieremo con quelli.

Un inizializzatore di array è una lista di espressioni separate da virgole contenute all'interno di parentesi quadre. Il valore di un inizializzatore di array è un array appena creato. Gli elementi di questo nuovo array sono inizializzati ai valori delle espressioni separate da virgole:

[]         // Un array vuoto: nessuna espressione dentro le parentesi significa nessun elemento
[1 + 2, 3 + 4]  // Un array di 2 elementi. Il primo elemento è 3, il secondo è 7

Le espressioni degli elementi in un inizializzatore di array possono essere esse stesse inizializzatori di array, il che significa che queste espressioni possono creare array annidati:

let matrice = [[1,2,3], [4,5,6], [7,8,9]];

Le espressioni degli elementi in un inizializzatore di array sono valutate ogni volta che l'inizializzatore di array è valutato. Questo significa che il valore di un'espressione inizializzatrice di array può essere diverso ogni volta che è valutata.

Elementi undefined possono essere inclusi in un letterale di array semplicemente omettendo un valore tra le virgole. Per esempio, il seguente array contiene cinque elementi, inclusi tre elementi undefined:

let arraySparso = [1,,,,5];

Una singola virgola finale è consentita dopo l'ultima espressione in un inizializzatore di array e non crea un elemento undefined. Tuttavia, qualsiasi espressione di accesso all'array per un indice dopo quello dell'ultima espressione necessariamente si valuterà a undefined.

Le espressioni inizializzatrici di oggetti sono come le espressioni inizializzatrici di array, ma le parentesi quadre sono sostituite da parentesi graffe, e ogni sottoespressione è preceduta da un nome di proprietà e da due punti:

let p = { x: 2.3, y: -1.2 };  // Un oggetto con 2 proprietà
let q = {};                   // Un oggetto vuoto senza proprietà
q.x = 2.3; q.y = -1.2;        // Ora q ha le stesse proprietà di p

In ES6, i letterali di oggetti hanno una sintassi molto più ricca di funzionalità (li studieremo più avanti). I letterali di oggetti possono essere annidati. Per esempio:

let rettangolo = {
    altoSinistra: { x: 2, y: 2 },
    bassoDestra: { x: 4, y: 5 }
};

Vedremo nuovamente gli inizializzatori di oggetti e array nelle prossime lezioni.