JavaScript 中判断数据类型的方式有哪些

125 阅读4分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天,点击查看活动详情

JavaScript 判断数据类型在我们的项目中非常常见,同时也是我们面试中的一个高频考题。

下面将会从以下四个方面进行介绍:

  • JavaScript 中判断数据类型的场景有哪些。我们要知道它的数据类型的方式,首先我们要了解它的场景。

  • JavaScript 中有哪些数据类型,要判断数据类型,前提是我们要知道 JavaScript中有哪些数据类型。

  • JavaScript中判断数据类型的方式有哪些

  • 面试中如果遇到该题目我们该如何回答。

JavaScript 中判断数据类型的场景有哪些

通过例子的方式说明它的场景。

const handleData=(data)=>{
    const type=Object。prototype。toString。call(data);
    const EventHandler={
        "[object Array]"(){
            console.log('Array handler');
            
        },
        "[object String]"(){
            console.log('String handler');
            
        }
    }
    EventHandler[type]();
}

在这个例子中,handleData 这个函数是用来处理我们后面返回的数据的。在这个函数里边我们可以看到,当我们拿到这个 date 之后,要根据 data 这个数据类型,也就是 type 来决定我们最终要调用 EventHandler 这个对象的哪个方法去,进行一个处理。 在这个 EventHandler 方法中,根据数据类型打印相关日志,比如数据类型是 Array 类型,就会打印 “Array handler”,如果是数据类型是 String 类型,就会打印 “String handler”。

调用方式就是用这个 EventHeader 中 type。这个type 是判断了这个 date 这个类型之后,把这个类型保存在我们 type 这个常量上,然后把这个 type 作为 EventHandler 的 K 来进行一个调用,这样的就能拿到一个数据进行一个处理。

JavaScript 中有哪些数据类型

  • 基本数据类型 String、Number、Boolean、Symbol、undefined、Null

  • 引用数据类型 Object、Array、Function、Data、FormData、Set、Map 等,引用数据类型哟局很多,这里只是列举一些

这里需要重点记忆基本数据类型和引用数据类型中的 Object、Array、Function、

JavaScript 中判断数据类型的方式有哪些

接下来我们来看一下建筑中判断数据类型的方式有哪些。建筑中判断数据类型的方式主要有两种,第一种是type of,第二种是object。there play type 点to string 点code。那

  • instanceof:为什么列出来的?因为这个 instanceof 很多地方介绍它是用来做数据类型判断的。但是这个instancesof 它的设计初衷是用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。虽然它也能用来判断我们的数据类型,但是我们不建议用它来做类型的判断。因为它的一个设计初衷是为了用于检测这个构造函数的 prototype 属性是否出现在某个对象的原型链上。

  • typeof:优点:使用简单。缺点:功能残缺,它只能用来判断的数据类型有 String、Number、Boolean、Undefined、SymBol、Function。

  • Object.protorype.toString.call:优点:使用判断所有的数据类型。缺点:使用上相对于 typeof 而言比较繁琐。

案例演示

const array = [];
const object = {};

const number = 1;
const string = 'string';

// typeof 
const type = typeof array;
console.log(`type`, type);

运行结果如下 image.png

很显然,如果在我们的项目中,用这种方式判断数组,肯定会出错。因为我们这个对象它本身是一个数组。为什么会会输出一个对象呢?因为数组本身也在对象这个范畴之内,所以 typeof 它的一个运算结果并不精确。它不能用来判断我们的这个数组类型。

如果说要判断数组,我们用 Object.protorype.toString.call(array) 方法,然后把它通过 call 方式给指向我们这个目标对象,也就是我们要判断这个对象。

const type = Object.prototype.toString.call(array);
console.log(`type`, type);

运行结果:

image.png

使用 Object.protorype.toString.call() 方法判断对象类型。

const type = Object.prototype.toString.call(object);

console.log(`type`, type);

运行结果;

image.png

面试中如果遇到该题目我们该如何回答?

  • 要说出建设中判断数据类型的场景,那这个场景可以举出我们刚才列举场景。也就是根据接口返回的参数类型做区别处理。

  • JavaScript 中的数据类型有哪些,例如基本数据类型和引用数据类型。

  • JavaScript 中判断数据类型的方式有哪些。