2012-12-27 63 views
6

我總是想知道JavaScript如何在內部存儲null值。 null與任何值不同。我想象範圍的變量存儲在某種結構數組中,每個結構都對應一個變量。這個結構是否有某種名爲「null」的布爾屬性?JavaScript如何在內部存儲空值?

我會尋找它自己的V8引擎源代碼,但我在C++代碼:(敢失去

我無法在谷歌發現任何東西。大多數結果與這樣的問題「如何確定變量是未定義的還是null?「或類似

+3

它可能取決於解釋器,雖然我會驚訝地發現它與簡單的零有所不同。這不是一個非常重要的細節。 – Pointy

+1

請注意,有幾個「falsy」值:null,undefined,false,0等。更可能的是,每個變量都有一個「type」字段,用於指示值是否爲空,未定義,數字,a布爾值,對象等 – cdhowie

+0

@Pointy當然,這取決於解釋器。如果它將零值存儲爲零,那麼爲什麼'(null === 0)'返回'false'? –

回答

3

JavaScript是一種弱類型的腳本語言,可能具有支持各種類型值的變體類型我相信PHP使用相同類型的變量,儘管它們在其他語言中也是衆所周知的並且在COM自動化中扮演着重要的角色

它們是基本的盟友結構包含一個類型和一個值。該值可以是簡單的值,也可以是指向更大或更復雜值的指針。 null只是支持的類型之一,在這種情況下,值本身不起作用。

但是由於JavaScript知道很多解釋器,因此沒有關於如何實現的規則,而且這是您不應該擔心的。通常情況下,你只需要知道這樣的時間關鍵型應用程序的底層技術,不應該用JavaScript編寫。

+2

'null'不是一個單獨的類型,真的;這是'Object'參考值的空值。 – Pointy

+0

我在談論通常知道的變體記錄的實現。 Javascript可能會將'null'描述爲特殊類型的對象,但我非常懷疑內部實際上是否存在對象。 – GolezTrol

+1

@Pointy(雖然我有點驚訝'typeof(null)'返回''object「'。) –