JS的數據類型有七種
原始類型:
- Boolean
- Number
- String
- undefined
- null
- Symbol
對象類型 Object
用typeof判斷類型
會出現下面的問題
typeof null // Object
typeof判斷其他的原始類型不會出現問題。
typeof 22 // 'number'
typeof 'lorry' // 'string'
typeof undefined // 'undefined'
typeof false // 'boolean'
typeof Symbol() // 'symbol'
出現這個結果的原因:
在JS的最初版本中使用的是32位系統,爲了性能考慮使用低位存儲變量的類型信息,000開頭的是對象,null是全0,所以將null誤判爲Object了,雖然現在的內部類型判斷代碼已經改變了,但bug永久的遺留下來了
typeof判斷對象
typeof判斷對象,除了function都會顯示object,所以typeof並不能準確地判斷變量類型
instanceof
可以用instanceof判斷對象的正確類型,它的內部機制是通過原型鏈來判斷的。
ps:是在掘金小冊 “前端面試之道” 看到的,剛好觸及到盲區就記錄下來了