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

JS中检测数据类型的有哪些?

在JavaScript中,有几种方法可以用来检测变量的数据类型。以下是常用的一些方法:

1. typeof 操作符

typeof 是最常用的类型检测方法,可以返回一个表示数据类型的字符串。

  • 对于基本数据类型,typeof 可以返回 "string""number""boolean""undefined""symbol" 或 "object"
  • 对于 nulltypeof 会返回 "object"
  • 对于数组、正则表达式、函数,typeof 会返回 "object"
 
let age = 25;
console.log(typeof age); // 输出: "number"

let name = "Alice";
console.log(typeof name); // 输出: "string"

let isActive = true;
console.log(typeof isActive); // 输出: "boolean"

let user = null;
console.log(typeof user); // 输出: "object"

let arr = [1, 2, 3];
console.log(typeof arr); // 输出: "object"

let func = function() {};
console.log(typeof func); // 输出: "function"

2. instanceof 操作符

instanceof 操作符用于检测构造函数的 prototype 属性是否出现在对象的原型链中。

let arr = [];
console.log(arr instanceof Array); // 输出: true
console.log(arr instanceof Object); // 输出: true

3. Object.prototype.toString.call() 方法

这是一个更准确的方法,可以返回对象的内部 [[Class]] 属性,这对于基本数据类型和复杂数据类型都有效。

console.log(Object.prototype.toString.call(25)); // 输出: "[object Number]"
console.log(Object.prototype.toString.call("Alice")); // 输出: "[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({})); // 输出: "[object Object]"
console.log(Object.prototype.toString.call([])); // 输出: "[object Array]"
console.log(Object.prototype.toString.call(function() {})); // 输出: "[object Function]"

4. constructor 属性

对象的 constructor 属性通常可以用来检测其类型,但它不是一个推荐的方法,因为构造函数可以被覆盖,并且不同的对象可能指向相同的构造函数。

 
let num = 42;
console.log(num.constructor === Number); // 输出: true

let arr = [1, 2, 3];
console.log(arr.constructor === Array); // 输出: true

在实际应用中,typeof 和 Object.prototype.toString.call() 是最常用的类型检测方法,因为它们通常可以提供足够的信息,而且不会受到外部修改的影响。


http://www.kler.cn/a/402166.html

相关文章:

  • Seatunnel解决Excel中无法将数字类型转换成字符串类型以及源码打包
  • 微众银行申请专利:不过分丢失泛用能力,提高语音大模型对困难样本学习效率
  • 【环境配置】ubuntu-jetson上的定时任务
  • 【初阶数据结构篇】队列的实现(赋源码)
  • Pandas学习
  • AWD脚本编写_1
  • adb使用
  • 力扣(leetcode)题目总结——辅助栈篇
  • SpringSecurity 鉴权认证入门讲解
  • Cyberchef使用功能之-多种压缩/解压缩操作对比
  • Postman之pm.test断言操作
  • 【Homework】【7】Learning resources for DQ Robotics in MATLAB
  • 大模型本地部署实践:Ollama+Open-WebUI(MacOS)
  • 鸿蒙中服务卡片数据的获取和渲染
  • 72项!湖北省2024年度第二批省级科技计划项目拟立项项目公示!
  • 基于豆包MarsCode 和 Threejs 实现3D地图可视化
  • 关于Web Component
  • 前端面试笔试(四)
  • 使用Go语言编写一个Web服务器,处理客户端的HTTP请求,并返回相应的HTML页面。
  • 百度AI人脸检测与对比
  • 优选算法--快乐数(快慢指针)循环链表
  • 《物理学进展》
  • koa-body 的详细使用文档
  • Node.js 版本管理的最终答案 Volta
  • windows系统中实现对于appium的依赖搭建
  • Android CALL按键同步切换通话界面上免提和听筒的图标显示