开发

JavaScript 中判断数据类型的几种方法

typeof

用于判断基本数据类型,判断复杂数据类型时返回值都是 object

console.log(typeof 36) // number
console.log(typeof 'PUJI') // string
console.log(typeof true) // boolean
console.log(typeof undefined) // undefined
console.log(typeof null) // object
console.log(typeof {}) // object
console.log(typeof []) // object
console.log(typeof new Date) // object
console.log(typeof function () {}) // function

constructor

可以判断复杂数据类型,但无法判断 undefined 和 null 类型

let num = 123
console.log(num.constructor) // Number()
console.log('PUJI'.constructor) // String()
console.log(true.constructor) // Boolean()
console.log([].constructor) // Array()
console.log((function () {}).constructor) // Function()
console.log((new Date()).constructor) // Date()

instanceof

无法判断基本数据类型,但可精确判断复杂数据类型

语法结构 “对象 instanceof 构造函数”

console.log( {} instanceof Object ) // true

Object.portotype.toString.call

可以判断所有数据类型

语法结构:“Object.portotype.toString.call(需要检测的数据类型)”

console.log(Object.portotype.toString.call(123)) // [object Number]
console.log(Object.portotype.toString.call('PUJI')) // [object String]
console.log(Object.portotype.toString.call(true)) // [object Boolean]
console.log(Object.portotype.toString.call(undefined)) // [object Undefined]
console.log(Object.portotype.toString.call(new Date())) // [object Date]
console.log(Object.portotype.toString.call(function () {})) // [object Function]
console.log(Object.portotype.toString.call([])) // [object Array]
console.log(Object.portotype.toString.call({})) // [object Object]

参考链接

Bilibili 视频教程
https://www.bilibili.com/video/BV15K4y1M721?p=12

PUJI Design 朴及设计 (c) 2024. 沪ICP备17052229号