当前位置: 首页 > news >正文

浅谈JS判断类型的几个方法

1. typeof

只能判断基本数据类型(null除外),对应复杂类型如数组,对象判断不了,均返回Object

console.log(typeof '123')  // string

console.log(typeof 123) // number

console.log(typeof true) // boolean

console.log(typeof false) // boolean

console.log(typeof null) // object

console.log(typeof undefined) // undefined

console.log(typeof Symbol('123')) // symbol

console.log(typeof {}) // object

console.log(typeof []) // object

console.log(typeof function(){}) // function

console.log(typeof new Date()) // object

console.log(typeof  /abc/) // object

2. instanceof

instanceof 可以判断数组和对象,但是后面要跟Array才能判断,但对于基本类型一律返回false

console.log('123' instanceof String)  // false
console.log(null instanceof Object)  // false
console.log( {} instanceof Array) // false
console.log( [] instanceof Array) // true
console.log( {} instanceof Object) // true
console.log( ['a'] instanceof Object) // true
console.log( function(){} instanceof Function) // true
console.log (function(){}  instanceof Object) // true
console.log ((new Date()) instanceof Object) // true
console.log ((new Date()) instanceof Date) // true

3. Array.isArray()

Array.isArray()判断类型是否为数组

console.log(Array.isArray([])) // true
console.log(Array.isArray({})) // false
console.log(Array.isArray('abc')) // false
console.log(Array.isArray(null)) // false
console.log(Array.isArray(undefined)) // false
console.log(Array.isArray(function(){})) // false

4. contructor属性

  判断null和undefined时候报错

console.log('123'.constructor === Number) // false
console.log((123).constructor === Number) // true
console.log([].constructor === Array) // true
console.log({}.constructor === Array) // false
console.log([].constructor === Object) // false
console.log({}.constructor === Object) // true
console.log(/abc/.constructor === Object) // false
console.log(/abc/.constructor === RegExp) // true
console.log(null.constructor)  // 报错
console.log(undefined.constructor) // 报错

5.Object.prototype.toString.call()  

推荐

console.log(Object.prototype.toString.call(123)) // [object Number]
console.log(Object.prototype.toString.call('123')) // [object String]
console.log(Object.prototype.toString.call(true)) // [object Boolean]
console.log(Object.prototype.toString.call(null)) // [object Null]
console.log(Object.prototype.toString.call(undefined)) // [object Undefined]
console.log(Object.prototype.toString.call(Symbol('123'))) // [object Symbol]
console.log(Object.prototype.toString.call({})) // [object Object]
console.log(Object.prototype.toString.call([])) // [object Array]
console.log(Object.prototype.toString.call(() => {})) // [object Function]
console.log(Object.prototype.toString.call(new Date())) // [object Date]
console.log(Object.prototype.toString.call(new RegExp())) // [object RegExp]
console.log(Object.prototype.toString.call(new Error())) // [object Error]
console.log(Object.prototype.toString.call(new Map())) // [object Map]
console.log(Object.prototype.toString.call(new Set())) // [object Set]

相关文章:

  • CNN注意力机制的进化史:深度解析10种注意力模块如何重塑卷积神经网络
  • 在 Vue 中监听常用按键事件(回车,ESC 键,空格等)。
  • Wincc通过VBS脚本控制控件“ Wincc Online Trend Control ”的曲线显示
  • windows开启wsl与轻量级虚拟机管理
  • [Vue]App.vue讲解
  • 【Vue3知识】组件间通信的方式
  • 2025年Python的主要应用场景
  • 查看wifi密码
  • 【AI News | 20250408】每日AI进展
  • layui 弹窗-调整窗口的缩放拖拽几次就看不到标题、被遮挡了怎么解决
  • 痉挛性斜颈康复助力:饮食调养指南
  • 物体检测算法:R-CNN,SSD,YOLO
  • Qt 交叉编译详细配置指南
  • Vue进行前端开发流程
  • 图解Java运行机制-JVM、JRE、JDK区别
  • 方法的重写
  • ubuntu安装openWebUI和Dify【自用详细版】
  • 【多源BFS】01 矩阵 / 飞地的数量 / 地图中的最高点 / 地图分析 / 腐烂的苹果
  • 01-JVM 内存模型与 GC 原理
  • 蓝桥杯-蓝桥幼儿园(并查集)
  • 比特币价格重返10万美元,哪些因素使然?
  • 青年与人工智能共未来,上海创新创业青年50人论坛徐汇分论坛举办
  • 中国以优化营商环境为支点,为全球企业提供可预期市场环境
  • 最快3天开通一条定制公交线路!上海推出服务平台更快响应市民需求
  • 上海发布预付卡消费“10点提示”:警惕“甩锅闭店”套路
  • 洞天寻隐·学林纪丨玉洞桃源:仇英青绿山水画中的洞天与身体