JS判断数据类型办法总结
废话不多说先来总结:
/**总结: * 1.typeof能精确判断出根本数据类型,然而不能判断援用数据类型。判断援用类型时除function外其余判断后果都为object。 * 2.instanceof 不能判断根本数据类型,然而能精确判断援用数据类型。这是因为instanceof是通过是否找到构造函数的原型对象来判断的。 * 3.Object.prototype.toString.call()能精确判断任何数据类型 */
js中数据类型分为两大类:根本数据类型和援用数据类型。JS根本数据类型(按值问):Number,String,Boolean,null,undefined,Symbol
援用数据类型(按援用拜访):Object,Array,function
具体示例如下:
let num=111;let str='hello';let flag=true;/**援用数据类型 */let arr=[1,2,3];let obj={name:'zhangsan',age:18};const func=function(){ console.log('---function');};/**typeof判断数据类型 */console.log(typeof num);//numberconsole.log(typeof str);//stringconsole.log(typeof flag);// booleanconsole.log(typeof null);//object---null自身就是对象,罕用来函数中返回不存在的对象。console.log(typeof undefined);//undefinedconsole.log(typeof Symbol);//functionconsole.log(typeof arr);//objectconsole.log(typeof obj);//objectconsole.log(typeof func);//function/**typeof 判断数据类型总结:typeof能很好的判断根本数据类型,然而对于援用数据类型不能很好判断。 * 援用数据类型除function能判断外,其余判断后果都为object。 *//**instanceof判断援用数据类型 */console.log(num instanceof Number);//falseconsole.log(str instanceof String);//falseconsole.log(flag instanceof Boolean);//falseconsole.log(Symbol instanceof Symbol);//falseconsole.log(arr instanceof Array);//trueconsole.log(obj instanceof Object);//trueconsole.log(func instanceof Function);//true/**instanceof判断数据类型总结:instanceof不能判断根本数据类型,能判断援用数据类型 *//**Object.prototype.toString.call()判断数据类型 */console.log(Object.prototype.toString.call(num));//[object Number]console.log(Object.prototype.toString.call(str));// [object String]console.log(Object.prototype.toString.call(flag));// [object Boolean]console.log(Object.prototype.toString.call(null));// [object Null]console.log(Object.prototype.toString.call(undefined));// [object Undefined]console.log(Object.prototype.toString.call(Symbol));// [object Function]console.log(Object.prototype.toString.call(arr));//[object Array]console.log(Object.prototype.toString.call(obj));// [object Object]console.log(Object.prototype.toString.call(func));// [object Function]