1. 程式人生 > 實用技巧 >48.原始型別有哪幾種?null是物件嗎?

48.原始型別有哪幾種?null是物件嗎?

原始型別有哪幾種?null 是物件嗎?

在 JS 中,存在著 6 種原始值,分別是:

  • boolean
  • null
  • undefined
  • number
  • string
  • symbol

首先原始型別儲存的都是值,是沒有函式可以呼叫的,比如undefined.toString()

此時你肯定會有疑問,這不對呀,明明'1'.toString()是可以使用的。其實在這種情況下,'1'已經不是原始型別了,而是被強制轉換成了String型別也就是物件型別,所以可以呼叫toString函式。


除了會在必要的情況下強轉型別以外,原始型別還有一些坑:


其中 JS 的number型別是浮點型別的,在使用中會遇到某些 Bug,比如0.1 + 0.2 !== 0.3

,但是這一塊的內容會在進階部分講到。string型別是不可變的,無論你在string型別上呼叫何種方法,都不會對值有改變。


null 是物件嘛?

另外對於null來說,很多人會認為他是個物件型別,其實這是錯誤的。雖然typeof null會輸出object,但是這只是 JS 存在的一個悠久 Bug。在 JS 的最初版本中使用的是 32 位系統,為了效能考慮使用低位儲存變數的型別資訊,000開頭代表是物件,然而null表示為全零,所以將它錯誤的判斷為object。雖然現在的內部型別判斷程式碼已經改變了,但是對於這個 Bug 卻是一直流傳下來。