返回

重磅来袭!ES6新增3种数据类型判断方法,你不得不知!

前端

ES6 三剑客:数据类型判断新利器

在 JavaScript 的世界里,数据类型判断是一门至关重要的功课。它让我们能准确地了解数据本质,进而更高效地处理它们。在 ES6 之前,我们只能使用 typeofinstanceof 两把利刃来完成这项任务。今天,我们来认识 ES6 新增的 "三剑客",它们将数据类型判断提升到了一个新高度。

1. Array.isArray:数组的独门秘籍

对于数组类型,Array.isArray 横空出世,一招制敌。无论传入什么类型的参数,它都能精准地辨识出数组,绝不混淆。

const arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true

const obj = {};
console.log(Array.isArray(obj)); // false

2. Object.prototype.toString.call:全能战士

Object.prototype.toString.call 堪称全能战士,任何类型的数据都能在其火眼金睛下无所遁形。它返回一个以 "[object " 开头的字符串,揭示了数据的真正身份。

console.log(Object.prototype.toString.call([1, 2, 3])); // "[object Array]"
console.log(Object.prototype.toString.call({})); // "[object Object]"
console.log(Object.prototype.toString.call(1)); // "[object Number]"

3. instanceof:类的判官

instanceof 运算符是判断数据是否为某个类实例的利器。它接收两个参数,第一个是要判断的数据,第二个是类本身。如果数据是类的实例,instanceof 便会举起正义之剑,斩钉截铁地判定为真。

class Person {
  constructor(name) {
    this.name = name;
  }
}

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

总结

这 "三剑客" 各有千秋,Array.isArray 专攻数组,Object.prototype.toString.call 通吃天下,instanceof 则精于判断类实例。在实战中,我们可以根据实际需要灵活选择最合适的方法。

常见问题解答

1. Array.isArray 和 instanceof 的区别是什么?

Array.isArray 专门判断数组类型,而 instanceof 可以判断任何类的实例。

2. Object.prototype.toString.call 的返回值是个什么鬼?

Object.prototype.toString.call 返回的是一个表示数据类型的字符串。

3. 如何判断一个值是否为 null?

可以通过 value === null 来判断。

4. 如何判断一个值是否为 undefined?

可以通过 value === undefined 来判断。

5. 如何判断一个值是否为 Symbol?

可以通过 typeof value === "symbol" 来判断。