Pourquoi typeof Null renvoie-t-il « Objet » bien qu'il ne s'agisse pas d'un type primitif ?
En lisant « Javascript professionnel pour les développeurs Web », vous Je rencontre une perplexité : le chapitre déclare que les primitives incluent null, mais typeof(null) renvoie "object". Comme les primitives sont généralement transmises par valeur et les objets par référence, cela semble contredire la nature primitive de null.
Racine historique de la manipulation de type
Plongeant dans les annales de JavaScript, nous découvrez que cette anomalie provient de l’implémentation initiale du langage. Au début de JavaScript, les valeurs étaient caractérisées par une balise de type et une valeur. Les objets avaient une balise de type 0. Null, représenté par le pointeur NULL (0x00), s'est vu attribuer par inadvertance une balise de type 0.
Remains of the Past
Cette association accidentelle de null avec la balise de type "object" a conduit au résultat typeof(null) erroné. Malgré les mises à jour et les progrès ultérieurs du langage, ce comportement a persisté, entravé par les craintes de perturber le code existant.
Correction proposée mais rejetée
Des efforts ont été déployés pour corriger ce problème. en proposant un correctif facultatif dans ECMAScript, avec l'intention de renvoyer typeof(null) comme "null". Cependant, la proposition a été rejetée. Sa mise en œuvre aurait introduit un changement significatif, brisant potentiellement le code existant qui reposait sur le comportement existant.
Situation actuelle
Par conséquent, le type particulier de comportement (null) demeure intégré dans le tissu de JavaScript. La manipulation de types en JavaScript continue d'être un aspect nuancé et influencé historiquement du langage, illustré par cette bizarrerie durable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!