常用的类型判断方法
typeof适合基本类型(字符串、数字、布尔值、undefined、函数、Symbol 以及 BigInt)
let num = 666;
console.log(typeof num); // 输出: 'number'
let str = "追光的栗子";
console.log(typeof str); // 输出: 'string'
let bool = true;
console.log(typeof bool); // 输出: 'boolean'
let noneNumber = null;
console.log(typeof bool); // 输出: 'object'
注意:对于数组和对象,typeof 操作符都会返回 object,无法区分
instanceof精准判断对象类型
let arr = [];
console.log(arr instanceof Array); // 输出: true
let date = new Date();
console.log(date instanceof Date); // 输出: true
注意:可用于判断一个对象是否属于某个构造函数的实例,也可对于数组、日期等内置对象类型判断
Array.isArray()用于数组
let arr = [];
console.log(Array.isArray(arr)); // 输出: true
注意:Array.isArray() 方法是专门用来判断一个变量是否为数组类型
Object.prototype.toString.call()适合所有类型
let num = 666;
console.log(Object.prototype.toString.call(num)); // 输出: '[object Number]'
let str = "追光的栗子";
console.log(Object.prototype.toString.call(str)); // 输出: '[object String]'
let arr = [];
console.log(Object.prototype.toString.call(arr)); // 输出: '[object Array]'
let nul = null;
console.log(Object.prototype.toString.call(nul)); // 输出: '[object Null]'
let un = undefined;
console.log(Object.prototype.toString.call(un)); // 输出: '[object Undefined]'
总结
- 基本类型判断,使用
typeof操作符,简洁高效 - 数组类型判断,
Array.isArray()方法最为准确 - 对象类型判断,使用
instanceof关键字 - 需要精确区分所有类型的场景,
Object.prototype.toString.call()方法为最佳选择