返回

typeof 与 instanceof 区别的简单解析

前端

typeof 和 instanceof 是 JavaScript 中用于检查数据类型的两个操作符。尽管它们都可用于此目的,但它们在行为和用途上却存在着显著差异。在本文中,我们将探究 typeof 和 instanceof 的区别,以便您能够根据实际情况选择最合适的操作符。

一、typeof

typeof 操作符返回一个字符串,表示未经计算的操作数的类型。使用方式如下:

typeof operand;

operand 表示对象或原始值的表达式,其类型将被返回。

举个例子:

typeof 5; // "number"
typeof "Hello"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object"

从上面例子,前6个都是基础数据类型。

null 值是一个例外,它在 JavaScript 中被视为对象,尽管它的实际类型为 null。这是 JavaScript 中的一个历史遗留问题,并且一直持续至今。

二、instanceof

instanceof 操作符用于检查一个对象是否属于某个类或其子类。语法如下:

object instanceof constructor;

object 是要检查的对象,constructor 是要检查的类或构造函数。如果 object 是 constructor 的实例,则返回 true,否则返回 false。

例如:

let person = new Person();
person instanceof Person; // true
person instanceof Object; // true

let animal = new Animal();
animal instanceof Person; // false
animal instanceof Animal; // true

三、比较

instanceof 和 typeof 之间的主要区别在于,typeof 返回操作数的数据类型,而 instanceof 检查对象是否属于某个类。因此,typeof 更常用于检查变量的数据类型,而 instanceof 更常用于检查对象是否属于某个类。

此外,typeof 可以用于任何数据类型,而 instanceof 只能用于对象。

最后,typeof 的结果是一个字符串,而 instanceof 的结果是一个布尔值。

四、何时使用

以下是何时使用 typeof 和 instanceof 的一些建议:

  • 使用 typeof 来检查变量的数据类型。例如,您可以使用 typeof 来检查变量是否为字符串、数字、布尔值或其他数据类型。
  • 使用 instanceof 来检查对象是否属于某个类。例如,您可以使用 instanceof 来检查对象是否为 Person 类或其子类的实例。

五、总结

typeof 和 instanceof 是 JavaScript 中用于检查数据类型的两个操作符。尽管它们都可用于此目的,但它们在行为和用途上却存在着显著差异。typeof 返回一个字符串,表示未经计算的操作数的类型。instanceof 用于检查一个对象是否属于某个类或其子类。在选择使用哪个操作符时,请考虑您要检查的数据类型以及您要执行的操作。