ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で「typeof null」が「object」を返すのはなぜですか?

JavaScript で「typeof null」が「object」を返すのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-03 22:38:09731ブラウズ

Why Does `typeof null` Return

プリミティブ型ではないにもかかわらず、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。