js校验数据类型
js校验数据类型常用的3种方式,typeof运算符、constructor属性和 Object.prototype.toString
- typeof 运算符返回变量或表达式的类型
原始数据值是一种没有额外属性和方法的单一简单数据值。typeof 运算符可返回以下原始类型之一:string,number,boolean,undefined。
复杂数据,typeof 运算符可返回以下两种类型之一:function, object。typeof 运算符把对象、数组或 null 返回 object,不会把函数返回 object。
console.log(typeof 1); // number
console.log(typeof "string"); // string
console.log(typeof false); // boolean
console.log(typeof NaN); // number
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof new Object()); // object
console.log(typeof new Array()); // object
console.log(typeof [1,2]); // object
console.log(typeof function(){}); // function
console.log(typeof new Date()); // object
- constructor 属性返回所有 JavaScript 变量的构造器函数。
可以区分数组,对象,Date, 函数。但是null,undefined会报错。
console.log("Bill".constructor ); // 返回 [Function: String]
console.log((3.14).constructor ); // 返回 [Function: Number]
console.log(false.constructor ); // 返回 [Function: Boolean]
console.log([1,2,3,4].constructor ); // 返回 [Function: Array]
console.log({name:'Bill', age:62}.constructor ); // 返回[Function: Object]
console.log(new Date().constructor ); // 返回 [Function: Date]
console.log(function () {}.constructor ); // 返回 [Function: Function]
console.log(null.constructor ); // 报错
console.log(undefined.constructor ); // 报错
- Object.prototype.toString 方法返回一个表示该对象的字符串
JavaScript 调用 toString 方法将对象转换为一个原始值。
const getType = (obj) => {
/*
[object Number] [object Undefined], toString方法返回的字符串如上所示,故取8到倒数第一个字符
*/
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}
// 使用
console.log(getType(1)); // number
console.log(getType(() => { })) // function
console.log(getType(undefined)) // undefinde
console.log(getType(null)) // null
console.log(getType('1234')) // string
console.log(getType(false)) // boolean
console.log(getType(new Date())) // date
console.log(getType(NaN)) // number
console.log(getType(new Array)) // array
以上是3种判断数据类型的方式,可以根据需要使用。