typeof型別判斷的精細講解
阿新 • • 發佈:2021-01-20
技術標籤: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);