Warum gibt typeof Null „Object“ zurück, obwohl es kein primitiver Typ ist?
Beim Lesen von „Professionelles Javascript für Webentwickler“ haben Sie stoßen auf eine Verwirrung: Das Kapitel besagt, dass Grundelemente null enthalten, typeof(null) jedoch „Objekt“ ergibt. Da Primitive typischerweise als Wert und Objekte als Referenz übergeben werden, widerspricht dies scheinbar der primitiven Natur von Null.
Historische Wurzel der Typmanipulation
Eintauchen in die Annalen von JavaScript, wir Entdecken Sie, dass diese Anomalie auf die anfängliche Implementierung der Sprache zurückzuführen ist. In den Anfängen von JavaScript wurden Werte durch ein Typ-Tag und einen Wert gekennzeichnet. Objekte hatten ein Typ-Tag von 0. Null, dargestellt durch den NULL-Zeiger (0x00), wurde versehentlich ein Typ-Tag von 0 zugewiesen.
Remains of the Past
Diese versehentliche Zuordnung von null mit dem Typ-Tag „object“ führte zu dem fehlerhaften Ergebnis „typeof(null)“. Trotz späterer Aktualisierungen und Weiterentwicklungen der Sprache blieb dieses Verhalten bestehen und wurde durch Bedenken hinsichtlich einer Störung des vorhandenen Codes behindert.
Fix vorgeschlagen, aber abgelehnt
Es wurden Anstrengungen unternommen, um dieses Problem zu beheben indem ein optionaler Fix in ECMAScript vorgeschlagen wird, der typeof(null) als „null“ zurückgeben soll. Der Vorschlag stieß jedoch auf Ablehnung. Seine Implementierung hätte zu einer erheblichen Änderung geführt und möglicherweise den Legacy-Code beschädigt, der auf dem vorhandenen Verhalten beruhte.
Aktuelle Situation
Folglich bleibt die besondere Art des (Null-)Verhaltens bestehen eingebettet in die Struktur von JavaScript. Die Typmanipulation in JavaScript ist nach wie vor ein nuancierter und historisch beeinflusster Aspekt der Sprache, was durch diese dauerhafte Eigenart veranschaulicht wird.
Das obige ist der detaillierte Inhalt vonWarum gibt „typeof null' in JavaScript „Objekt' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!