面试经常问到的JS中的数据类型检测方案

本文详细解析JavaScript中常用的三种数据类型检测方法:typeof、instanceof和Object.prototype.toString.call,比较其优缺点并提供实际代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试经常问到的JS中的数据类型检测方案


1.typeof

代码如下(示例):

console.log(typeof 100)                 // number
console.log(typeof true)                // boolean
console.log(typeof 'dg')                // string
console.log(typeof function(){})        // function
console.log(typeof console.log())       // function
console.log(typeof [])                  // object 
console.log(typeof {})                  // object
console.log(typeof null)                // object
console.log(typeof undefined)           // undefined

优点:能够快速区分基本数据类型
缺点:不能将Object、Array和Null区分,都返回object

2.instanceof

console.log(100 instanceof Number)                    // false
console.log(true instanceof Boolean)                  // false 
console.log('ldg' instanceof String)                  // false  
console.log([] instanceof Array)                      // true
console.log(function(){} instanceof Function)         // true
console.log({} instanceof Object)                     // true

优点:能够区分Array、Object和Function,适合用于判断自定义的类实例对象
缺点:Number,Boolean,String基本数据类型不能判断

3.Object.prototype.toString.call()

const toString = Object.prototype.toString;
console.log(toString.call(100))                       //[object Number]
console.log(toString.call(true))                      //[object Boolean]
console.log(toString.call('dg'))                      //[object String]
console.log(toString.call([]))                        //[object Array]
console.log(toString.call({}))                        //[object Object]
console.log(toString.call(function(){}))              //[object Function]
console.log(toString.call(undefined))                 //[object Undefined]
console.log(toString.call(null))                      //[object Null]

优点:精准判断数据类型
缺点:写法繁琐不容易记,推荐进行封装后使用


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值