什么能判断数据类型?
在JavaScript中
- typeof 运算符 用于检测给定变量的数据类型,并返回一个表示类型的字符串
- instanceof 运算符 用于检测对象是否是指定类型的实例。它可以判断对象是否属于特定的类或构造函数的实例
- Array.isArray( ) 函数 检测一个值是否是数组类型。它返回一个布尔值
- Object.prototype.toString.call( ) 方法 返回一个表示对象类型的字符串
typeof怎么去判断呢?
写一个简单的示例代码
function getType(test) {
console.log(typeof test)
}
这样调用 getType 并传递参数 可以打印出他是什么类型的数据
但是typeof 有一个很严重的历史遗留问题, 它对于null进行判断的时候 会返回object
所以 null 需要进行单独的判断
完整的函数判断
function getType(data) {
if(data === null) {
console.log(String(data))
} else if (typeof data === "object"){
let type = Object.prototype.toString.call(data).replace("[object"."").replace("]","").toLowerCase()
console.log(type)
} else {
console.log(typeof data)
}
}
本函数接收一个参数 经过判断打印出对应的类型 使用时直接调用并传入值即可
代码解析:
第一个判断 是三个等式判断传入的数据是否为null 因为null在typeof 中无法判断
第二个判断 是用typeof判断传入的值是否为对象 如果是对象 则使用Object.prototype.toString方法 .call(data) 是获取对象的字符串表示, 返回一个以 [object 类型] 的格式表示对象的字符串 .replace方法是用来去掉字符串中多余的部分, 只保留对象对象的具体类型部分 .toLowerCase()方法将类型字符串转换为小写形式, 方便输出的时候统一格式 最后打印type(类型)值
第三个判断 是当数据不为 null 时 也不为对象类型时的判断 直接使用 typeof 运算符打印出出基本数据类型的结果