每日一题:实现类型判断
每日一题:实现类型判断
挑战介绍
本节我们来挑战一道大厂面试真题 —— 实现类型判断。
挑战准备
新建一个 getType.js 文件,在文件里写一个名为 getType 的函数,并导出这个函数,如下图所示:

这个文件在环境初始化时会自动生成,如果发现没有自动生成就按照上述图片自己创建文件和函数,函数代码如下:
1 | function getType(target) { |
挑战内容
请封装一个函数,能够以字符串的形式精准地返回数据类型。
要求返回的类型全部由小写字母组成。
示例:
| 输入 | 输出 |
|---|---|
| true | ‘boolean’ |
| 100 | ‘number’ |
| ‘abc’ | ‘string’ |
| 100n | ‘bigint’ |
| null | ‘null’ |
| undefined | ‘undefined’ |
| Symbol(‘a’) | ‘symbol’ |
| [] | ‘array’ |
| {} | ‘object’ |
| function fn() {} | ‘function’ |
| new Date() | ‘date’ |
| /abc/ | ‘regexp’ |
| new Error() | ‘error’ |
| new Map() | ‘map’ |
| new Set() | ‘set’ |
| new WeakMap() | ‘weakmap’ |
| new WeakSet() | ‘weakset’ |
注意事项
- 文件名、函数名不可随意更改。
- 文件中编写的函数需要导出,否则将无法提交通过。
题解
使用typeof打log发现,实例化对象、对象、null会显示object,其他能够使用typeof正常显示。
其中。null是因为一个古老的版本问题。那么我们可以逐个判断了:
1 | function getType(target) { |
也可以调用Object对象的原型上的toString方法
1 | function getType(target) { |
你提供的函数
getType使用了Object.prototype.toString方法来获取目标值的类型,并且通过.slice(8, -1)来截取类型字符串的部分。这是一个非常有效的方式来获取数据类型的信息。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 江月迟迟!
