2012-12-27 13 views
6

私はいつもJavaScriptがnullの値を内部的にどのように格納しているのか疑問に思いました。 nullはどの値とも異なります。私は、スコープの変数がある種類の構造体の配列に格納されており、各構造体は変数に対応していると思います。この構造体には、 "null"と呼ばれる何らかのブール値のプロパティがありますか?JavaScriptは内部的にnull値をどのように保存しますか?

私はV8のソースコードでそれを自分自身を見てだろうが、かなりC++コードで失わアム:(

私はGoogleで何かを見つけることができませんでした。ほとんどの結果は、「どのようにのような質問に関連していました変数が未定義であるかnullであるかを判断する」等

+3

おそらくインタプリタに依存しますが、それは単純にゼロ以外のものであったことに驚いています。それは本当に重要な詳細ではありません。 – Pointy

+1

ヌル、未定義、偽、0など、いくつかの「偽の」値があることに留意してください。各変数に、値がnull、未定義、数値、ブール値、オブジェクトなど – cdhowie

+0

@ Pointy確かに、それはインタープリタに依存します。 null値をゼロとして格納する場合、 '(null === 0)'が 'false'を返すのはなぜですか? –

答えて

3

弱く型付けされたスクリプト言語であるJavaScriptは、おそらくすべての種類の値をサポートするバリアント型です。他の言語でもよく知られていて、COMオートメーションで重要な役割を果たしています。

型と値を含む構造体。値は、単純な値、またはより大きい値またはより複雑な値へのポインタです。 nullはサポートされている型の1つに過ぎません。その場合、値そのものは何も行いません。

しかし、JavaScriptは多くのインタープリタを認識しているため、実装方法についてのルールはなく、心配する必要はありません。通常は、タイムクリティカルなアプリケーションの場合は、このような基礎的なテクニックについて知っておく必要があります.JavaScriptで書かないでください。

+2

'ヌル'は別のタイプではありません。 'Object'参照値のための空の値です。 – Pointy

+0

私はよく知っているバリアントレコードの実装について話していました。 Javascriptは 'null'を特別な型のオブジェクトとして記述するかもしれませんが、内部的には実際にオブジェクトが存在することは間違いありません。 – GolezTrol

+1

@Pointy( 'typeof(null)'が ''オブジェクト ''を返すのは少し驚いたが) –

関連する問題