js中各种数据类型检测和判定的实战示例
H-rosy 人气:0介绍
在前端开发中,js 有各种各样的数据类型,数据类型检测是每个开发者都必须掌握基础知识。数据类型检测的方法也有很多种,本题将封装一个通用的数据类型检测函数。
准备
本题已经内置了初始代码,打开实验环境,目录结构如下:
.
└── main.js
其中:
main.js 是待补充代码的 js 文件。
在 main.js 文件中封装好方法以后,可以尝试在该文件中手动调用已经封装好的方法,通过命令 node main.js 来执行文件,打印对应的日志。
目标
完善 main.js 中 getType 函数中的 TODO 部分,返回传入值的对应数据类型。
传入值以及 getType 函数返回值(大小写可忽略)按照如下方式对应:
传入值 返回值
‘s’ string
0 number
传入值 | 返回值 |
---|---|
false | boolean |
undefined | undefined |
Symbol() | symbol |
function fn(){} | function |
123n | bigint |
null | null |
{} | object |
[] | array |
new Date | date |
new Map | map |
new Set | set |
/a/ | regexp |
测试用例
// 示例 const testArr = [ "s", 0, false, undefined, Symbol(), function () {}, 123n, null, {}, [], new Date(), new Map(), new Set(), /a/, ]; const result = testArr.map((item) => getType(item)); console.log("得到的结果:", result); /* 得到的结果: [ 'string', 'number', 'boolean', 'undefined', 'symbol', 'function', 'bigint', 'null', 'object', 'array', 'date', 'map', 'set', 'regExp' ] */
值得注意的是需要我们区别typeof与instanceof的用法。instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另外一个要检测对象的原型链上。关于原型链请自行学习,这里不过多解释。typeof返回的是一个字符串,具体用法请见代码。typeof只能检测出图中的8种类型。并且你如果使用typeof检测 null、Date、RegExp、Error都会返回为object类型。所以最好使用instanceof检测
代码
/** * @description: 数据类型检测 * @param {*} data 传入的待检测数据 * @return {*} 返回数据类型 */ function getType(data) { // TODO:待补充代码 if(typeof data=="String"){ return 'string'; }else if( typeof data=="number"){ return "number" }else if(typeof data== "boolean"){ return "boolean" }else if(typeof data=="undefined"){ return "undefined" }else if(typeof data== "function"){ return "function" }else if(typeof data=== "symbol"){ return "symbol" } else if(typeof data== "bigint"){ return "bigint" }else if( data=== null){ return "null" }else if(Array.isArray(data)){ return "array" }else if(data instanceof Date){ return "date" }else if(data instanceof RegExp){ return "regExp" } else if(data instanceof Map){ return "map" }else if(data instanceof Set){ return "set" } else if(typeof data=="string"){ return "string" }else if(typeof data=="object"){ return "object" } } const testArr = [ "s", 0, false, undefined, Symbol(), function () {}, 123n, null, {}, [], new Date(), new Map(), new Set(), /a/, ]; const result = testArr.map((item) => getType(item)); console.log("得到的结果:", result); module.exports = { getType }
使用
可以把代码复制到一个js文件中。在终端运行node 文件名.js即可。测试结果如下,结果是从左往右开始读,然后下一行
总结
加载全部内容