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

js数据类型检测

JavaScript的数据类型检测

typeof操作符

  • 适用场景
    • 基本数据类型快速判断:适用于快速判断变量是否为numberstringbooleanundefinedfunction等基本数据类型。比如在函数参数检查中,若要求传入数字参数,可用typeof来初步判断。
    • 函数类型判断:能轻松判断一个变量是否为函数类型,在处理回调函数等场景中很实用。
  • 示例
console.log(typeof 123); // "number"
console.log(typeof 'abc'); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof function(){}); // "function"

instanceof操作符

  • 适用场景
    • 自定义对象类型判断:在面向对象编程中,用于判断一个对象是否是某个自定义构造函数的实例,方便进行多态操作和类型特定的方法调用。
    • 内置对象类型细分:可区分内置对象的具体类型,如判断一个对象是否为ArrayDate等。
  • 示例
const arr = [];
console.log(arr instanceof Array); // true

const date = new Date();
console.log(date instanceof Date); // true

constructor属性

  • 适用场景
    • 简单类型判断与回溯:可用于快速判断基本数据类型和简单对象的构造函数来源,在一些需要快速追溯数据类型创建源头的场景中有用。
    • 简单对象类型识别:对于通过构造函数创建的简单对象,可通过constructor判断其类型。
  • 示例
const num = 42;
console.log(num.constructor === Number); // true

function Person(name) {
    this.name = name;
}
const person = new Person('John');
console.log(person.constructor === Person); // true

Object.prototype.toString.call()方法

  • 适用场景
    • 精准类型判断:在需要精确判断数据类型,尤其是在区分nullarray与普通object等容易混淆的类型时,是首选方法。
    • 通用类型检测工具:可用于编写通用的类型检测工具函数,适用于各种复杂场景下的数据类型检查。
  • 示例
console.log(Object.prototype.toString.call(123)); // "[object Number]"
console.log(Object.prototype.toString.call('abc')); // "[object String]"
console.log(Object.prototype.toString.call(null)); // "[object Null]"
console.log(Object.prototype.toString.call([])); // "[object Array]"
console.log(Object.prototype.toString.call({})); // "[object Object]"

Array.isArray()方法

  • 适用场景
    专门用于判断一个值是否为数组,在处理数组相关的操作,确保操作的数据是数组类型时使用。
  • 示例
console.log(Array.isArray([])); // true
console.log(Array.isArray({})); // false

基于正则表达式的类型判断

  • 适用场景
    • 字符串格式验证:用于验证字符串是否符合特定格式,如邮箱、电话号码等。
    • 数据格式规范化:在数据输入、数据清洗等场景中,确保数据格式的正确性和一致性。
  • 示例
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test('test@example.com')); // true
console.log(emailRegex.test('invalid_email')); // false

文章转载自:

http://MydUp1zW.yktwr.cn
http://JyWQQ4hx.yktwr.cn
http://ysR1TaD2.yktwr.cn
http://ygPSVgaR.yktwr.cn
http://83ST9aes.yktwr.cn
http://ocYZ9eJR.yktwr.cn
http://qT7eTRdX.yktwr.cn
http://QQwcPBie.yktwr.cn
http://gqctn44W.yktwr.cn
http://u3Wpzeto.yktwr.cn
http://tXVLyfCW.yktwr.cn
http://lAQ6eHUC.yktwr.cn
http://cMtj6OLO.yktwr.cn
http://4TrPMlqm.yktwr.cn
http://S7wcV8fX.yktwr.cn
http://xTQ051T0.yktwr.cn
http://xjGEriT6.yktwr.cn
http://RvMNmWyb.yktwr.cn
http://TGqOy7wP.yktwr.cn
http://SYVO7eWb.yktwr.cn
http://5v1agkTU.yktwr.cn
http://lm5DfJqy.yktwr.cn
http://yFppR3xs.yktwr.cn
http://p5I9Jbaw.yktwr.cn
http://TRePhUNs.yktwr.cn
http://H4ek2owW.yktwr.cn
http://MSqAk2AU.yktwr.cn
http://fBJMpNEp.yktwr.cn
http://lDSk9gEP.yktwr.cn
http://9JtLWYQ8.yktwr.cn
http://www.dtcms.com/a/33374.html

相关文章:

  • Linux 常见面试题汇总
  • Baklib一站式企业知识库搭建指南
  • Deepseek首页实现 HTML
  • 连接Sql Server时报错无法通过使用安全套接字层加密与 SQL Server 建立安全连接
  • 通俗易懂的浏览器事件循环指南(含async/await)
  • Linux提权之计划任务反弹shell提权(十一)
  • 【Viewer.js】vue3封装图片查看器
  • 【时时三省】(C语言基础)结构化程序设计方法
  • 二:前端发送POST请求,后端获取数据
  • Java并发 ThreadLocal 原理(详解)
  • c++中,什么时候应该使用mutable关键字?
  • Bash Shell控制台终端命令合集
  • C语言番外篇(3)------------>break、continue
  • 论文笔记:Autonomy-of-Experts Model
  • watchEffect 里有响应式依赖时并没有自动追踪
  • C++关键字之mutable
  • Tesseract OCR:起源、发展与完整使用指南
  • 多线程篇学习面试
  • 请谈谈 Vue 中的 key 属性的重要性,如何确保列表项的唯一标识?
  • 设计模式Python版 中介者模式
  • Vue 3 + Vite 项目中配置代理解决开发环境中跨域请求问题
  • Linux系统管理与编程01:准备工作
  • vim 多个关键字高亮插件介绍
  • A. Jagged Swaps
  • mybatis从接口直接跳到xml的插件
  • 不同activity的mViewModel是复用同一个的还是每个activity都是创建新的ViewModel
  • DeepSeek各模型现有版本对比分析
  • Python selenium 库
  • 轻松将 Python 应用移植到 Android,p4a 帮你实现
  • 485. 最大连续 1 的个数