js中判斷類型的方法

javascript中關於類型的判斷有不少種方法, 這裏介紹兩種經常使用的。javascript

  • typeof

typeof操做符返回一個字符串,表示未經計算的操做數的類型。java

console.log(typeof 12); // number

 console.log(typeof 'hello'); // string

 console.log(typeof true); // boolean

MDN中, typeof的用法記錄的很詳細。性能

clipboard.png

這裏有個js的關鍵點, 即typeof null == object。 null 不是一個對象,儘管 typeof null 輸出的是 object,這是一個歷史遺留問題,JS 的最第一版本中使用的是 32 位系統,爲了性能考慮使用低位存儲變量的類型信息,000 開頭表明是對象, null 表示爲全零,因此將它錯誤的判斷爲 object 。spa

正由於typeof不能準確判斷一個對象變量, 因此須要下面一種方法prototype

  • Object.prototype.toString.call

使用Object.prototype上的原生toString()方法判斷數據類型code

console.log( Object.prototype.toString.call( 'hello' )) // [object String]

 console.log( Object.prototype.toString.call( 1 )) // [object Number]

 console.log( Object.prototype.toString.call( [1, 2, 3] )) // [object Array]

 console.log( Object.prototype.toString.call( null )) // [object Null]

能夠將這樣的一長串代碼封裝成檢測類型的方法對象

let isType = type => obj => {
  return Object.prototype.toString.call( obj ) === `[object ${type}]`
}

isType('String')('123');       // true
isType('Array')([1, 2, 3]);    // true
isType('Number')(1);           // true
相關文章
相關標籤/搜索