我總是想知道JavaScript如何在內部存儲null
值。 null
與任何值不同。我想象範圍的變量存儲在某種結構數組中,每個結構都對應一個變量。這個結構是否有某種名爲「null」的布爾屬性?JavaScript如何在內部存儲空值?
我會尋找它自己的V8引擎源代碼,但我在C++代碼:(敢失去
我無法在谷歌發現任何東西。大多數結果與這樣的問題「如何確定變量是未定義的還是null?「或類似
我總是想知道JavaScript如何在內部存儲null
值。 null
與任何值不同。我想象範圍的變量存儲在某種結構數組中,每個結構都對應一個變量。這個結構是否有某種名爲「null」的布爾屬性?JavaScript如何在內部存儲空值?
我會尋找它自己的V8引擎源代碼,但我在C++代碼:(敢失去
我無法在谷歌發現任何東西。大多數結果與這樣的問題「如何確定變量是未定義的還是null?「或類似
JavaScript是一種弱類型的腳本語言,可能具有支持各種類型值的變體類型我相信PHP使用相同類型的變量,儘管它們在其他語言中也是衆所周知的並且在COM自動化中扮演着重要的角色
它們是基本的盟友結構包含一個類型和一個值。該值可以是簡單的值,也可以是指向更大或更復雜值的指針。 null
只是支持的類型之一,在這種情況下,值本身不起作用。
但是由於JavaScript知道很多解釋器,因此沒有關於如何實現的規則,而且這是您不應該擔心的。通常情況下,你只需要知道這樣的時間關鍵型應用程序的底層技術,不應該用JavaScript編寫。
它可能取決於解釋器,雖然我會驚訝地發現它與簡單的零有所不同。這不是一個非常重要的細節。 – Pointy
請注意,有幾個「falsy」值:null,undefined,false,0等。更可能的是,每個變量都有一個「type」字段,用於指示值是否爲空,未定義,數字,a布爾值,對象等 – cdhowie
@Pointy當然,這取決於解釋器。如果它將零值存儲爲零,那麼爲什麼'(null === 0)'返回'false'? –