js判断数值类型?如何判断js变量的数据类型
const toString = Object.prototype.toString;// 各种类型export function is(val: unknown, type: string) { return toString.call(val) === `[object ${type}]`;}// undefinedexport function isDef<T = unknown>(val?: T): val is T { return typeof val !== 'undefined';}// !undefinedexport function isUnDef<T = unknown>(val?: T): val is T { return !isDef(val);}//Objectexport function isObject(val: any): val is Record<any, any> { return val !== null && is(val, 'Object');}// ''export function isEmpty<T = unknown>(val: T): val is T { if (isArray(val) || isString(val)) { return val.length === 0; } if (val instanceof Map || val instanceof Set) { return val.size === 0; } if (isObject(val)) { return Object.keys(val).length === 0; } return false;}//Dateexport function isDate(val: unknown): val is Date { return is(val, 'Date');}//nullexport function isNull(val: unknown): val is null { return val === null;}// underfind && nullexport function isNullAndUnDef(val: unknown): val is null | undefined { return isUnDef(val) && isNull(val);}export function isNullOrUnDef(val: unknown): val is null | undefined { return isUnDef(val) || isNull(val);}// Numberexport function isNumber(val: unknown): val is number { return is(val, 'Number');}// promiseexport function isPromise<T = any>(val: unknown): val is Promise<T> { return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch);}// stringexport function isString(val: unknown): val is string { return is(val, 'String');}// functionexport function isFunction(val: unknown): val is Function { return typeof val === 'function';}// Booleanexport function isBoolean(val: unknown): val is boolean { return is(val, 'Boolean');}// RegExpexport function isRegExp(val: unknown): val is RegExp { return is(val, 'RegExp');}// isArrayexport function isArray(val: any): val is Array<any> { return val && Array.isArray(val);}// windowexport function isWindow(val: any): val is Window { return typeof window !== 'undefined' && is(val, 'Window');}// elementexport function isElement(val: unknown): val is Element { return isObject(val) && !!val.tagName;}// ismapexport function isMap(val: unknown): val is Map<any, any> { return is(val, 'Map');}export const isServer = typeof window === 'undefined';export const isClient = !isServer;export function isUrl(path: string): boolean { const reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/; return reg.test(path);}
文章插图
js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object) 。
typeof 操作符
由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
【js判断数值类型?如何判断js变量的数据类型】typeof 123 //Numbertypeof 'abc' //Stringtypeof true //Booleantypeof undefined //Undefinedtypeof null //Objecttypeof { } //Objecttypeof [ ] //Objecttypeof console.log() //Function
null类型进行typeof操作符后,结果是object,原因在于,null类型被当做一个空对象引用 。
1.Number类型
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值 。
NaN:非数字类型 。特点:① 涉及到的 任何关于NaN的操作,都会返回NaN ② NaN不等于自身 。
isNaN() 函数用于检查其参数是否是非数字值 。
isNaN(123) //false isNaN("hello") //true
2.String类型
字符串有length属性 。
字符串转换:转型函数String(),适用于任何数据类型(null,undefined 转换后为null和undefined);toString()方法(null,defined没有toString()方法) 。
3.Boolean类型
该类型只有两个值,true和false
4.Undefined类型
只有一个值,即undefined值 。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined 。
5.Null类型
null类型被看做空对象指针,前文说到null类型也是空的对象引用 。
6.Object类型
js中对象是一组属性与方法的集合 。这里就要说到引用类型了,引用类型是一种数据结构,用于将数据和功能组织在一起 。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法 。
三大引用类型
1.Object类型
我们看到的大多数类型值都是Object类型的实例,创建Object实例的方式有两种 。
第一种是使用new操作符后跟Object构造函数,如下所示
var person = new Object();person.name = "Micheal";person.age = 24;
推荐阅读
- 别让你的茶叶变质了,如何判断茶叶变质
- 安溪铁观音新技术保鲜,安溪铁观音的三大类型
- 综艺节目|Q2综艺:数量增加、类型多样、爆款难寻
- 如何判断你是否真正的完美主义者
- 前端工程师如何判断一个对象是否有某个属性?
- 碧螺春绿茶是否会过期,怎样判断岳西翠尖是否过期
- 碧螺春绿茶有什么功效,如何判断染色碧螺春
- 龙井新茶和陈茶的区别,判别新茶与陈茶的判断方式
- 安溪铁观音商标简介,安溪铁观音的三大类型
- 12类人饮茶需慎重,怎样判断岳西翠尖是否过期