题目要求:
编写一个函数,他接受一个参数,并根据该参数的类型返回相应的字符串表示
解答过程:
类型(蓝色是基本数据类型,紫色是引用数据类型) | 判断方法(value是判断的对象) |
number、bigint、string、boolean、undefined、symbol、function、object | typeof直接判断 |
null | value === null |
Array | Array.isArray(value) |
Set、Map | value instanceof Set/Map |
1、一般用什么方法进行判断?
typeof
2、一般判断过程中会遇到什么特殊情况?
null、Array、Set、Map用typeof进行判断,输出的也都是object,无法进行区分
3、为什么会出现这种特殊请况?
null:
在js语言的第一版,所有值都设计为32位,最低三位用来表示数据类型,object对应的值是000
null的二进制,32位全是0,所以返回的是object。(例:100:字符串、110:布尔类型)
Array:数组是一种特殊类型的对象
Set、Map:这些数据结构都是基于对象实现的,所以判断输出的是object
4、对于特殊情况该怎么处理?(见上方表格)