48.原始型別有哪幾種?null是物件嗎?
阿新 • • 發佈:2020-08-10
原始型別有哪幾種?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 卻是一直流傳下來。