常用的类型判断方法
1. typeof 操作符:简洁快速,适合基本类型
typeof
操作符是我们判断基本类型的得力助手,例如字符串、数字、布尔值、`undefined、函数、Symbol 以及 BigInt。
let num = 123;
console.log(typeof num); // 输出: 'number'
let str = "hello";
console.log(typeof str); // 输出: 'string'
let bool = true;
console.log(typeof bool); // 输出: 'boolean'
需要注意的是:
typeof null
会返回 'object'
,而不是 'null'
,这是 JavaScript
的一个历史遗留问题。
对于数组和对象,typeof
操作符都会返回 'object'
,无法区分。
2. instanceof 关键字:精准判断对象类型
- 用于判断一个对象是否属于某个构造函数的实例。
- 对于数组、日期等内置对象类型判断非常有用。
let arr = [];
console.log(arr instanceof Array); // 输出: true
let date = new Date();
console.log(date instanceof Date); // 输出: true
3. Array.isArray() 方法:简洁高效,专用于数组
Array.isArray()
方法是专门用来判断一个变量是否为数组类型的,比 instanceof
更简洁明了。
let arr = [];
console.log(Array.isArray(arr)); // 输出: true
4. Object.prototype.toString.call() 方法:全面精确,适合所有类型
Object.prototype.toString.call()
方法是最全面的类型判断方法,可以精确判断出包括 null
在内的所有类型的变量。它返回一个形如 ‘[object Type]’ 的字符串,其中 Type 表示变量的类型。
let num = 123;
console.log(Object.prototype.toString.call(num)); // 输出: '[object Number]'
let arr = [];
console.log(Object.prototype.toString.call(arr)); // 输出: '[object Array]'
let nul = null;
console.log(Object.prototype.toString.call(nul)); // 输出: '[object Null]'
如何选择合适的类型判断方法?
- 对于基本类型判断,建议使用
typeof
操作符,简洁高效。 - 对于数组类型判断,
Array.isArray()
方法最为准确。 - 对于对象类型判断,可以使用
instanceof
关键字。 - 对于需要精确区分所有类型的场景,
Object.prototype.toString.call()
方法是最佳选择。