javascript判斷數(shù)據(jù)類型主要有以下幾種方式:
1.typeof
2.instanceof
3.Object.prototype.toString.call()
4.Array.isArray()
5.Number.isNaN()
一、typeof
返回number,string,boolean,undefined,function,object字符串讨跟。
其中object,null,array以及通過(guò)new關(guān)鍵字創(chuàng)建的基本數(shù)據(jù)類型空免,返回的都是object字符串。
typeof("str") //string
var str = new String("str")
typeof(str) //object
二、instanceof
返回true/false。
判斷變量是否為某個(gè)對(duì)象的實(shí)例。
其中通過(guò)字面量創(chuàng)建的number,boolean,string判斷其對(duì)應(yīng)基本數(shù)據(jù)類型時(shí)壹置,均會(huì)返回false,必須使用new關(guān)鍵字方式創(chuàng)建的number,boolean,string才會(huì)返回true表谊。
undefined和null使用會(huì)報(bào)錯(cuò)钞护。
"str" instanceof String; //false
var str = new String("str")
str instanceof String; //true
null instanceof null; //Uncaught ReferenceError
三、Object.prototype.toString.call()
返回"[object Xxx]"的字符串爆办。
通過(guò)返回的字符串难咕,使用indexOf()判斷是哪種數(shù)據(jù)類型。
Object.prototype.toString.call(null) // [object Null]
四、Array.isArray()
返回true/false步藕。
用于判斷是否是數(shù)組惦界。
Array.isArray([]) //true
五挑格、Number.isNaN()
返回true/false咙冗。
用于判斷是否是NaN。
Number.isNaN(NaN) //true
總結(jié)
1.判斷Array:
用instanceof, Object.prototype.toString.call(),Array.isArray()
2.判斷undefined:
用 typeof,Object.prototype.toString.call()
3.判斷null:
用Object.prototype.toString.call()
4.判斷function:
用typeof,instanceof,Object.prototype.toString.call()
5.判斷NaN:
用Number.isNaN()