📜  instanceof vs typeof (1)

📅  最后修改于: 2023-12-03 14:42:07.640000             🧑  作者: Mango

instanceof vs typeof

在JavaScript中,有两种方式来检查一个值的类型:instanceoftypeof。这两种方法在某些情况下可以互换使用,但在其他情况下它们的用途是不同的。在本篇文章中,我们将介绍这两种操作符的用法,并且提供一些例子来说明它们之间的异同。

typeof

typeof操作符用来检查一个值的类型。操作符返回一个字符串,表示被检查的值的类型。typeof通常用来检查一个已知的基本数据类型或内置类型。

以下是typeof操作符的用法:

typeof value;

其中value是一个JavaScript值。

以下是typeof操作符可能返回的字符串值:

  • 'number' 如果value是一个数字
  • 'string' 如果value是一个字符串
  • 'boolean' 如果value是一个布尔值
  • 'undefined' 如果valueundefined
  • 'object' 如果value是一个对象(包括数组和null)
  • 'function' 如果value是一个函数
instanceof

instanceof操作符用来检查一个对象是否属于某个类。它的语法如下:

object instanceof class;

其中object是你需要检查的对象,class是你需要检查的类。如果object属于class,操作符返回true,否则返回false

以下是一个实际的例子:

const today = new Date();
console.log(today instanceof Date); // true
console.log(today instanceof Object); // true
console.log(today instanceof Array); // false
区别

这两种操作符的主要区别是它们检查对象的方式不同:

  • typeof针对基本数据类型或内置类型,例如字符串、数字和布尔值;
  • instanceof针对特定类或自定义对象。

举例来说:

const value = 'hello';
console.log(typeof value === 'string'); // true
console.log(value instanceof String); // false

const date = new Date();
console.log(typeof date === 'object'); // true
console.log(date instanceof Date); // true

在这个例子中,我们声明了一个字符串和一个日期对象。通过使用typeofinstanceof,我们可以检查它们的类型。请注意,字符串被认为不是一个String对象,因为在JavaScript中,字符串可以是原始类型或对象类型。

总结

typeof用于基本数据类型或内置类型,例如数字、字符串和布尔值。instanceof用于检查特定类或自定义的对象。在检查类型之前,你必须确认你正要检查哪些类型。这将有助于你选择正确的操作符,并准确地识别你的代码中的错误。