javascript 判斷數據類型


Object.prototype.toString.call(asddfff) //報錯asddfff沒被定義
Object.prototype.toString.call(undefined) //"[object Undefined]"
Object.prototype.toString.call(function a(){}) //"[object Function]"
Object.prototype.toString.call(123) //"[object Number]"
Object.prototype.toString.call('') //"[object String]"
Object.prototype.toString.call() //"[object Undefined]"
Object.prototype.toString.call(null) //"[object Null]"
Object.prototype.toString.call([]) //"[object Array]"
Object.prototype.toString.call({}) //"[object Object]"
問題是:未定義的會報錯(能夠忽略,由於通常未定義的也不會隨便拿來判斷)prototype

typeof null // "object"
typeof assssssaz //"undefined"
typeof undefined //"undefined"
typeof '' //"string"
typeof 123 //"number"
typeof function(){} //"function"
typeof [] //"object"
typeof {} //"object"
問題是:array和null會被判斷成Object。好處是:不管哪一種都不會報錯。string

(function a(){}) instanceof Function //true
[] instanceof Array //true
({a:11}) instanceof Object //true
123 instanceof Number //false
'' instanceof String //false
aaaaxsas instanceof Null //直接報錯
aaaaxsas instanceof undefined //直接報錯
問題是:這個用起來問題比較多,只能用於複雜類型的判斷,不能用於基本類型的判斷,未定義的變量直接報錯。io

相關文章
相關標籤/搜索