內置類型
JavaScript有七種的內置類型:
- 空值(null)
- 未定義(undefined)
- 布爾值(boolean)
- 數學(number)
- 字符串(string)
- 對象(object)
- 符號(symbol)
其中除了對象之外,其它六種統稱為基本類型。
如何進行類型判斷
使用typeof
使用typeof進行類型判斷的返回值是該類型的字符串值,返回值只能為"object"、"number"、"undefined"、"string"、"boolean"、"symbol"、"function"其中一個。可以注意到的是,這些返回值跟JavaScript的內置類型不是一一進應的。
缺少了null,而多了function。
與內置類型一一對應的就不詳細說了。重點關注null和function。
對於null比較特殊,這算一個JavaScript歷史悠久的一個Bug,是因為object的底層實現中頭三位都是0,而null的底層實現直接是全0,因此typeof在判斷null才會誤判為object。
1 | console.log(typeof null); // object |
function屬於object的子類型,屬於一個特例吧。
1 | function a() {} |
對於其它object的子類型,例如數組,都會直接返回object
1 | const a = [1, 2, 3]; |
其它的判斷方法還有instance of、constructor、Object.prototype.toString.cal等方法,之後再詳細再說。
值和類型
JavaScript中的變量是沒有類型的。只有值才有類型,變量可以隨時持有任何類型的值。
1 | let a = 42; |
