<>介绍
在前端开发中,js 有各种各样的数据类型,数据类型检测是每个开发者都必须掌握基础知识。数据类型检测的方法也有很多种,本题将封装一个通用的数据类型检测函数。
<>准备
本题已经内置了初始代码,打开实验环境,目录结构如下:
.
└── main.js
其中:
main.js 是待补充代码的 js 文件。
在 main.js 文件中封装好方法以后,可以尝试在该文件中手动调用已经封装好的方法,通过命令 node main.js 来执行文件,打印对应的日志。
<>目标
完善 main.js 中 getType 函数中的 TODO 部分,返回传入值的对应数据类型。
传入值以及 getType 函数返回值(大小写可忽略)按照如下方式对应:
传入值 返回值
‘s’ string
0 number
传入值返回值
falseboolean
undefinedundefined
Symbol()symbol
function fn(){}function
123nbigint
nullnull
{}object
[]array
new Datedate
new Mapmap
new Setset
/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(
datainstanceof 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即可。测试结果如下,结果是从左往右开始读,然后下一行