返回

JS 类型判断之 instanceof、typeof、isArray 对比与原理解析

前端

  1. instanceof 运算符

instanceof 运算符用于判断一个对象是否属于某个类的实例。其语法为:

object instanceof class

其中,object 是要判断的对象,class 是要判断的类。

例如:

const person = new Person();
console.log(person instanceof Person); // true

instanceof 运算符的底层原理是检查对象的原型链中是否包含指定类的原型。如果包含,则返回 true;否则,返回 false。

instanceof 运算符主要用于判断一个对象是否属于某个类或其子类。它适用于所有类型的对象,包括内置对象和自定义对象。

2. typeof 运算符

typeof 运算符用于获取一个变量的类型。其语法为:

typeof variable

其中,variable 是要获取类型的值。

例如:

console.log(typeof 1); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object"

typeof 运算符的底层原理是根据变量在内存中的存储方式来判断其类型。

typeof 运算符主要用于获取变量的基本类型,包括数字、字符串、布尔值、undefined 和 null。它不适用于对象。

3. isArray() 方法

isArray() 方法用于判断一个变量是否为数组。其语法为:

isArray(variable)

其中,variable 是要判断的值。

例如:

console.log(isArray([1, 2, 3])); // true
console.log(isArray("hello")); // false
console.log(isArray(true)); // false
console.log(isArray(undefined)); // false
console.log(isArray(null)); // false

isArray() 方法的底层原理是检查变量的内部结构是否符合数组的定义。

isArray() 方法主要用于判断一个变量是否为数组。它适用于所有类型的数组,包括内置数组和自定义数组。

4. instanceof、typeof 和 isArray 的对比

特性 instanceof typeof isArray
判断类型 类实例 基本类型 数组
适用范围 对象 变量 数组
底层原理 原型链 内存存储方式 内部结构

5. 总结

instanceof、typeof 和 isArray 是 JS 中常用的类型判断方法。它们具有不同的适用场景和底层原理。

instanceof 运算符用于判断一个对象是否属于某个类的实例。typeof 运算符用于获取一个变量的基本类型。isArray() 方法用于判断一个变量是否为数组。

在实际开发中,我们可以根据不同的需求选择合适的类型判断方法。