Skip to content
大纲

数据类型判断

typeof 可以正确识别:Undefined、Boolean、Number、String、Symbol、Function 等类型的数据,

但对于其他的都会认为是 object,比如 Null、Date 等,所以通过 typeof 来判断数据类型会不准确。

这时可以使用 Object.prototype.toString 来实现类型判断。

点我查看详细
js
function typeOf(obj) {
  let res = Object.prototype.toString.call(obj).split(' ')[1]
  res = res.substring(0, res.length - 1).toLowerCase()
  return res
}

// typeof 已经可以正确识别的
console.log(typeOf(undefined)) // 'undefind'
console.log(typeOf(true)) // 'boolean'
console.log(typeOf(1)) // 'number'
console.log(typeOf('')) // 'string'
console.log(typeOf(Symbol('test'))) // 'sysbol'
console.log(typeOf(function(){})) // 'function'

// 其他的判断,现在也能识别正确了
console.log(typeOf([])) // 'array'
console.log(typeOf({})) // 'object'
console.log(typeOf(null)) // 'null'
console.log(typeOf(new Date())) // 'date'
console.log(typeOf(new RegExp())) // 'regexp'
console.log(typeOf(new Error())) // 'date'

// 另外的
console.log(typeOf(window)) // 'window'
console.log(typeOf(window.location)) // 'location'