js中各种数据类型检测和判定的实战示例
介绍
在前端开发中,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即可。测试结果如下,结果是从左往右开始读,然后下一行
总结
到此这篇关于js中各种数据类型检测和判定的文章就介绍到这了,更多相关js数据类型检测和判定内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
重学 JS:为啥 await 不能用在 forEach 中详解
这篇文章主要介绍了重学 JS:为啥 await 不能用在 forEach 中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04js-FCC算法-No repeats please字符串的全排列(详解)
下面小编就为大家带来一篇js-FCC算法-No repeats please字符串的全排列(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-05-05javascript嵌套函数和在函数内调用外部函数的区别分析
这篇文章主要介绍了javascript嵌套函数和在函数内调用外部函数的区别,需要的朋友可以参考下2016-01-01JavaScript中Function函数与Object对象的关系
这篇文章主要介绍了JavaScript中Function函数与Object对象的关系的相关资料,需要的朋友可以参考下2015-12-12
最新评论