写在前面

前面有写过,JS 的数据类型分为两大类,基本数据类型(值类型)和引用数据类型,基本数据类型有六种,分别是 Number、String、Boolean、Symbol、Undefined、NULL,引用数据类型只有一个就是对象 Object,JS 在对象的基础上又进一步内置了更多的对象类型,如数组、函数、日期等。

1. typeof

typeof 是 JS 中的一个操作符,用于判断一个操作数的类型,其返回值是一个字符串。

语法为:typeof operand(操作数)

  1. console.log(typeof 42);
  2. // expected output: "number"
  3. console.log(typeof 'blubber');
  4. // expected output: "string"
  5. console.log(typeof true);
  6. // expected output: "boolean"
  7. console.log(typeof undeclaredVariable);
  8. // expected output: "undefined";

typeof 的返回值总共有8个,但具体又不是一一对应的,如下:

  1. 四种基本数据类型返回对应的全小写字符串,即 String 类型返回 “string”,Number 类型返回 “number”,Boolean 类型返回 “boolean”,Symbol 类型返回 “symbol”。
  2. 两个空数据类型中, Undefined 类型返回 “undefined”,NULL 类型返回 “object”。
  3. 引用数据类型中对象又分为几个特别情况:Function 对象类型返回 “function”,除此以外的其他对象都是返回 “object”。
  4. 还有一个 BigInt 对象,使用 typeof 操作符会返回 “bigint”。

因此记忆特例,对于 typeof 操作符,可以判断出对象中的 Function 函数对象和 BigInt 长整型对象,判断不出 NULL ,其他是与数据类型一一对应。

2. instanceof

instanceof 是 JS 中的一个运算符,用于检测某个实例的原型链中是否含有某个构造函数的 Prototype 属性对象。

语法为:object instanceof constructor

其返回值为一个Boolean值,为 true 或 false