ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で「typeof null」が「object」を返すのはなぜですか?
プリミティブ型ではないにもかかわらず、typeof Null が "Object" を返すのはなぜですか?
「Web 開発者のためのプロフェッショナル JavaScript」を読んでいるときに、この章では、プリミティブには null が含まれると述べられていますが、typeof(null) は「オブジェクト」を生成します。通常、プリミティブは値によって渡され、オブジェクトは参照によって渡されるため、これは null のプリミティブな性質と一見矛盾しているように見えます。
型操作の歴史的根源
JavaScript の歴史を詳しく見ていきます。この異常は言語の初期実装に起因することがわかりました。 JavaScript の初期段階では、値は型タグと値によって特徴付けられていました。オブジェクトの型タグは 0 でした。NULL ポインター (0x00) で表される Null には、誤って 0 の型タグが割り当てられました。
Remains of the Past
この偶然の null と「object」タイプ タグとの関連付けにより、誤った typeof(null) の結果が発生しました。その後の言語の更新と進歩にも関わらず、この動作は残り、既存のコードを中断するという懸念によって妨げられました。
修正案が提案されたが拒否されました
この問題を修正するための努力が行われました。 ECMAScript でオプションの修正を提案し、typeof(null) を「null」として返すようにします。しかし、この提案は拒否に直面しました。その実装では大幅な変更が導入され、既存の動作に依存する従来のコードが破壊される可能性がありました。
現在の状況
そのため、独特の typeof(null) 動作が残ります。 JavaScript のファブリック内に埋め込まれています。 JavaScript における型操作は、この言語の微妙な側面であり続け、歴史的に影響を受けており、この永続的な癖がその例を示しています。
以上がJavaScript で「typeof null」が「object」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。