今早的地铁看了一个很基础的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
简单整理一下,以上校验方法不够完整,欢迎指正补充,感谢~