1. 程式人生 > 其它 >typeof型別判斷的精細講解

typeof型別判斷的精細講解

技術標籤:js底層邏輯javascriptes6

1.為什麼null用typeof型別判斷出來的是object呢?

因為在記憶體中儲存的所有值都是通過二進位制數值進行儲存的,儲存物件的前幾位跟null的前幾位數值是相同的,typeof在轉換的時候就把null當成物件進行轉換了,但null是基本資料型別,並不是object;如果是function函式的,他就轉化成函式。

typeof轉換的細節問題:
(1).通過typeof轉換後返回的都是以字串的形式返回數值。

例:typeof(1); //=>“number”

(2).侷限性:在typeof轉換的時候,物件跟陣列,他們是無法區分的,轉換出來的都是字串object。

typeof([]); //=>“object”
typeof({});//=>“object”

typeof轉化之後一共會有6個型別:number,string,boolean,undefined,object,function。

對於es6新增的兩種資料型別:Symbol,bigInt返回的都是這兩種資料型別。

typeof的侷限性,我們後期可以通過另外三種資料型別判斷來解決。
(Object.prototype.toString.call();instanceof;construcotr)

下面賦予一道練習題:

let a = typeof typeof typeof [12,
23]; console.log(a);