转载自:https://blog.csdn.net/qq_30100043/article/details/76618490
typeof
作用:用于判断一个一个表达式,(对象或者原始值),返回一个字符串。
返回的可能的值(摘自mdn)
类型 结果
- Undefined "undefined"
- Null "object" (历史遗留问题)
- Boolean "boolean"
- Number "number"
- String "string"
- Symbol (ECMAScript 6 新增) "symbol"
宿主对象(由JS环境提供) Implementation-dependent
函数对象 ( [[Call]] 在ECMA-262条款中实现了) "function"
任何其他对象 "object"
instanceof
instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
使用规则:
[JavaScript] 纯文本查看 复制代码 object instanceof constructor
要求前面是个对象,后面是一个构造函数。而且返回的是布尔型的,不是true就是false。
常用使用:
由于typeof只能判断类型,所以,数组和对象返回的都是object,这时就需要使用instanceof来判断是否是
[JavaScript] 纯文本查看 复制代码 [] instanceof Array //true
所以,我们可以通过这两种方式封装一个函数专门进行类型判断:
[JavaScript] 纯文本查看 复制代码 function getDataType(obj) {
if(obj === null){
return "null";
}else if(typeof obj === "object"){
if(obj instanceof Array){
return "array";
}else{
return "object";
}
}else{
return typeof obj;
}
}
以下是对每个类型的测试
[JavaScript] 纯文本查看 复制代码 console.log(getDataType(111)); //number
console.log(getDataType("fasd"));//string
console.log(getDataType(true));//boolean
console.log(getDataType(function () { }));//function
console.log(getDataType([]));//array
console.log(getDataType({}));//object
console.log(getDataType(null));//null
console.log(getDataType(undefined));//undefined
console.log(getDataType(/\n/));//object
var a;
console.log(getDataType(a));//undefined
如果传入没有声明的变量会直接报错
|