javascript中對變數型別的判斷方法

納蘭不是容若發表於2019-03-18

使用typeof檢測

  • var num = 123; "number"
  • var str = 'abcdef'; "string"
  • var bool = true; "boolean"
  • var arr = [1, 2, 3, 4]; "object"
  • var json = {name:'wenzi', age:25}; "object"
  • var func = function(){ console.log('this is function'); } "function"
  • var und = undefined; "undefined"
  • var nul = null; "object"
  • var date = new Date(); "object"
  • var reg = /[1]{5,20}$/; "object"
  • var error= new Error(); "object"

檢測:typeof num;返回"number"

使用instanceof檢測

  • 要求開發者明確地確認物件為某特定型別: num instanceof number 返回false
  • num, str和bool沒有檢測出他的型別

使用constructor檢測

constructor本來是原型物件上的屬性,指向建構函式。

  • Tom.constructor==Person,
  • num.constructor==Number,
  • str.constructor==String,
  • bool.constructor==Boolean,
  • arr.constructor==Array,
  • json.constructor==Object,
  • func.constructor==Function,
  • date.constructor==Date,
  • reg.constructor==RegExp,
  • error.constructor==Error 除了undefined和null,其他型別的變數均能使用constructor判斷出型別,不過使用constructor也不是保險的,因為constructor屬性是可以被修改的,會導致檢測出的結果不正確

使用Object.prototype.toString.call檢測

如:Object.prototype.toString.call(num) 返回'[object Number]'

  • 可以使用Object.prototype.toString.call(arr)=="object Array"來檢測變數arr是不是陣列

  1. a-zA-Z ↩︎

相關文章