I tipi null e undefined in JavaScript

Null e Undefined in JavaScript
Null e Undefined in JavaScript

Domande e commenti

Il valore null rappresenta un tipo primitivo, mentre object no, allora come mai l’interprete JavaScript sembra confonderli?

È un bug, e purtroppo è uno di quei (tanti) bug di JavaScript che non può essere risolto perché qualsiasi soluzione avrebbe l’effetto indesiderato di invalidare milioni di righe di codice esistenti.

Come mai?

La storia del bug del tipo di null

Nella prima versione di JavaScript i valori venivano memorizzati in una porzione di memoria limitata a 32 bit, immaginate una sequenza di 30 zero e uno:

01010110100100101010101010010101

Il tipo di valore era riconoscibile osservando gli ultimi bit, secondo delle regole:

  • Se l’ultimo bit era 1 allora il tipo era considerato int, ovvero un numero intero.
  • Se l’ultimo bit era 0 allora si consideravano anche i due precedenti:
    • 000 rappresentava object;
    • 010 rappresentava double;
    • 100 rappresentava string;
    • 110 rappresentava boolean.

Quando si trattava di valutare il tipo di null, ovvero l’assenza di valore, l’interprete lo confondeva con il caso in cui gli ultimi tre bit avevano valore zero, quindi con object.

Il sorgente in linguaggio C del primo interprete, per i curiosi, è consultabile qui.

Questo articolo è parte della collana JavaScript: Guida di riferimento per aspiranti web developer.

Continua a leggere questa collana:

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.