面试题(三):判断变量类型都有哪些方法?

86 阅读1分钟

常用的类型判断方法

  1. 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,无法区分

  1. instanceof 精准判断对象类型
let arr = []; 
console.log(arr instanceof Array); // 输出: true 

let date = new Date(); 
console.log(date instanceof Date); // 输出: true

注意:可用于判断一个对象是否属于某个构造函数的实例,也可对于数组、日期等内置对象类型判断

  1. Array.isArray() 用于数组
let arr = []; 
console.log(Array.isArray(arr)); // 输出: true

注意:Array.isArray() 方法是专门用来判断一个变量是否为数组类型

  1. 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() 方法为最佳选择