在写代码时,总是有很多的地方要先判断数据类型,然后再进行其他操作,本文就用原生了js中常用的类型判断方法并,很方便在实际项目中封装后使用。
/**
* @description 常用数据类型判断方法 baseUtils.js
*/
const ERROR_MISSING = 'params is not a {{msg}}';
const toString = Object.prototype.toString;
const hasOwnProperty = Object.prototype.hasOwnProperty;
/**
* @description: 获取变量真实的类型值
* @param {Any} variable 任意变量
* @return {String} 该变量的类型
*/
export const getVariableType = (variable) => {
return toString.call(variable).slice(8, -1);
};
/**
* @description: 判断变量是否是对象
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是对象
*/
export const isObject = (variable) => {
return getVariableType(variable) === 'Object';
};
/**
* @description: 判断变量是否是布尔值
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是布尔值
*/
export const isBoolean = (variable) => {
return getVariableType(variable) === 'Boolean';
};
/**
* @description: 判断变量是否是字符串
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是字符串
*/
export const isString = (variable) => {
return getVariableType(variable) === 'String';
};
/**
* @description: 判断变量是否是数组
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是数组
*/
export const isArray = (variable) => {
return getVariableType(variable) === 'Array';
};
/**
* @description: 判断变量是否是数字
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是数字
*/
export const isNumber = (variable) => {
return getVariableType(variable) === 'Number' && !isNaN(variable);
};
/**
* @description 判断变量是否是Map
* @param {*} variable 任意变量
* @returns {Boolean} 该变量是否是Map
*/
export const isMap = (variable) => {
return getVariableType(variable) === 'Map';
};
/**
* @description: 判断变量是否是空值
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是空值
*/
export const isEmptyValue = (variable) => {
return getVariableType(variable) === 'Undefined' || getVariableType(variable) === 'Null';
};
/**
* @description: 判断是不是DOM元素集合
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是DOM元素集合
*/
export const isHtmlCollection = (variable) => {
return getVariableType(variable) === 'HTMLCollection';
};
/**
* @description: 判断是不是DOM元素
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是DOM元素
*/
export const isHtmlElement = (variable) => {
let typeName = getVariableType(variable);
typeName = typeName.slice(0, 4) + typeName.slice(-7);
return typeName === 'HTMLElement' && variable.tagName && variable.nodeType === 1;
};
/**
* @description: 检验DOM元素的真实性(假-抛出异常阻碍进程,真-往下执行)
* @param {Any} variable 任意变量
* @return 无返回
*/
export const checkHtmlElement = (variable) => {
if (!isHtmlElement(variable)) {
// 不是DOM元素抛出异常
throw new TypeError(ERROR_MISSING.replace(/\{{(.+?)\}}/g, 'HTMLElement'));
}
};
/**
* @description: 判断变量是否是函数
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是函数
*/
export const isFunction = (variable) => {
return getVariableType(variable) === 'Function';
};
/**
* @description: 判断变量是否是时间对象
* @param {Any} variable 任意变量
* @return {Boolean} 该变量是否是时间对象
*/
export const isDate = (variable) => {
return getVariableType(variable) === 'Date';
};
希望能对你有所帮助~