JS中數據類型檢測方法——typeof

前面咱們學習了JS中的數據類型:javascript

  • 基礎數據類型:numberstringbooleannullundefinedsymbolBigIntjava

  • 引用數據類型:object(普通對象、數組對象、正則對象、日期對象...)function數組

今天咱們簡單介紹下JS中數據類型檢測中的typeof瀏覽器

一、JS中的數據類型檢測方法:

  • tyepof [value] :檢測數據類型的運算符
  • [example] instanceof [class] : 檢測某一個實例是否屬於這個類
  • [example].constructor===[class] :檢測實例和類關係的,從而檢測數據類型
  • Object.prototype.toString.call([value]):檢測數據類型

二、typeof

  • 定義:用來檢測數據類型的運算符
  • 語法:tyepof [value]
  • 返回值:
    • typeof 檢測的結果首先是一個字符串;
    • 字符串中包含了對應的數據類型(例如: 「number」「string」「boolean」「undefined」「object」「function」「symbol」「bigint」

三、typeof檢測的侷限性(特殊值)

  • 一、NaN / Infinity 都是數字類型的,檢測結果都是「number」;
  • 二、typeof null 的結果是「object」;
    • (這是瀏覽器的BUG:全部的值在計算中都以二進制編碼儲存,瀏覽器中把前三位000的看成對象,而null的二進制前三位是000,因此被識別爲對象,可是他不是對象,他是空對象指針,是基本類型值)
  • 三、typeof 普通對象/數組對象/正則對象..., 結果都是「object」,這樣就沒法基於typeof 區分是普通對象仍是數組對象``...等了

四、應用場景

  • 已知有一個變量x,可是咱們沒法確認其數據類型,咱們須要有一個判斷操做:當x的類型是對象的時候(什麼對象均可以),則處理對應的事情
if (typeof x == "object") {         
    //=>null檢測結果也會是"object",因此結果是"object"不必定是對象,還多是null呢
    ...
}
複製代碼

能夠用👇的條件進行判斷bash

if (x != null && typeof x == "object") {
    // ...
}
複製代碼

五、練習題

console.log(typeof []); //=>"object"學習

console.log(typeof typeof typeof []); //=>"string"編碼

需注意:spa

因爲`typeof`返回的結果永遠是一個字符串(字符串中包含了對應的類型),因此連續出現`兩個及兩個以上typeof檢測`的時候,最後結果都是` "string"` prototype

思惟導圖:

相關文章
相關標籤/搜索