JavaScript è concepito come linguaggio operativo del Web: ogni pagina o applicazione che esegue codice client-side poggia sulla sua capacità di descrivere, manipolare e reagire ai contenuti del documento. Il capitolo 2 di JavaScript: The Definitive Guide (7ª ed.) inizia proprio da qui, affrontando la natura dei valori e delle variabili, perché una comprensione solida di questi concetti è prerequisito per tutto il resto del linguaggio.
Il punto cardine da fissare è il seguente: i valori possiedono un tipo, le variabili no. In JavaScript le variabili sono semplici contenitori dinamici; il tipo viene determinato soltanto dall’entità (il valore) che in un dato momento vi è assegnata. Questa caratteristica - il dynamic paging - garantisce flessibilità ma richiede rigore da parte di chi scrive il codice per evitare errori logici o di coercizione implicita.

I tipi primitivi rappresentano entità atomiche, non ulteriormente de-strutturabili:
"abc"), singoli apici ('abc') o backtick (abc). Il backtick abilita template literal e interpolazione.42, 3.1415).true e false.Questi tipi sono immutabili: ogni operazione che sembra modificarne il contenuto, in realtà, crea un nuovo valore.
Tutto ciò che non è primitivo ricade nel macro-tipo object, un insieme eterogeneo di proprietà indirizzate da chiavi. Tre categorie meritano menzione immediata:
Object e dotate di metodi per manipolazione sequenziale.Gli oggetti sono mutabili: due variabili che fanno riferimento allo stesso oggetto condividono stato; le operazioni agiscono per via referenziale.
Le variabili, nel linguaggio JavaScript, sono riferimenti puri: non contengono direttamente il valore, ma puntano a un valore memorizzato altrove in memoria. Questa natura di riferimento fa sì che l’identità della variabile sia distinta dal dato a cui fa riferimento.