JS 判断数据类型
众所周知JS的数据类型原来有七种,ES2020 引入了一种新的数据类型 BigInt(大整数),所以共有8种
使用typeof
/**5个基本**/
console.log(typeof 'str') // > string
console.log(typeof 1) // > number
console.log(typeof true) // > boolean
console.log(typeof Symbol()) // > symbol
console.log(typeof 123n) // > bigint
/**2个空**/
/*undefined未定义,变量不存在或者变量定义后没赋值*/
console.log(typeof undefined) // > undefined
/*null*/存在变量,但是值被赋予了null(空)
console.log(typeof null) // > object
/**对象类型**/
console.log(typeof {}) // > object
console.log(typeof []) // > object
console.log(typeof function(){}) // > function
可以看到,对于5个基本类型和undefined使用时效果正常,其他都效果不佳。
Object.prototype.toString.call()
let [
string,
number,
boolean,
symbol,
bigint,
unde,
nu,
object,
array,
fun
] =
['string',
1,
true,
Symbol(),
123n,
undefined,
null,
{},
[],
function(){}]
let value = [string,number,boolean,symbol,bigint,unde,nu,object,array,fun]
value.forEach((ele) => {
let toString = Object.prototype.toString.call(ele)
console.log(toString)
})
// [object String]
// [object Number]
// [object Boolean]
// [object Symbol]
// [object BigInt]
// [object Undefined]
// [object Null]
// [object Object]
// [object Array]
// [object Function]
我们可以看到,Object.prototype.toString.call()的方法返回的字符串可以稳定的得出是何种数据类型。
用是否为目标构造函数实例的方式判断类型
instanceof 已知对象类型来用(查到父级和以上)
console.log(object instanceof Object) console.log(fun instanceof Function) console.log(array instanceof Array) // 都为true
只能用于对象类型的判断
constructor,(查到父级结束)
console.log(array.constructor === Array) // true console.log(object.constructor === Object) // true console.log(fun.constructor === Function) // true
也可以对Date日期等类型使用。

浙公网安备 33010602011771号