重磅来袭!ES6新增3种数据类型判断方法,你不得不知!
2024-01-05 00:46:19
ES6 三剑客:数据类型判断新利器
在 JavaScript 的世界里,数据类型判断是一门至关重要的功课。它让我们能准确地了解数据本质,进而更高效地处理它们。在 ES6 之前,我们只能使用 typeof
和 instanceof
两把利刃来完成这项任务。今天,我们来认识 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"
来判断。