js的基本数据类型及校验方法

2,168 阅读1分钟

今早的地铁看了一个很基础的js面试题,结果悲剧了。。。 那就从头来理一下js的基础吧。

1、js的数据类型

原始类型---保存栈中、赋值是复制变量值

null  undefined number  string  boolean  symbol bigint

//symbol是es6新增的数据类型,目的是为了防止属性名的冲突,保证对象中每一个属性名都是独一无二的。
// bigint表示任意大的整数

对象类型(引用类型)---保存堆中、赋值是复制引用地址

function  array  RegExp Date  Math  Error Set  Map 

2、关于检验数据类型的方法

typeof

用来判断除了null以外的原始类型的数据,它判断的null是个object,但是它可以用来判断对象类型中的function

instanceof

用它来判断对象类型

Object.prototype.toString.call()

既可以检测原始数据类型又可以检测对象类型,举个例子

Object.prototype.toString.call(function(){}) // [object Function]

3、那么在实际的代码中我们需要一个校验数据类型的函数怎么封装一个呢?

function checkDataType(obj){
    const dataType = typeof obj
    if(dataType !== 'object'){
        return dataType
    }
    return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase()
}
console.log(checkDataType('qinggugu')) // string
console.log(checkDataType(1)) // number

简单整理一下,以上校验方法不够完整,欢迎指正补充,感谢~