如何对JS 中的数据类型进行检测

这篇具有很好参考价值的文章主要介绍了如何对JS 中的数据类型进行检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法一:typeof

typeof操作符可以用来检测一个值的数据类型,返回一个表示数据类型的字符串。

console.log(typeof 1); // number
console.log(typeof true); // boolean
console.log(typeof "mc"); // string
console.log(typeof Symbol); // function
console.log(typeof function () {}); // function
console.log(typeof console.log()); // function
console.log(typeof []); // object
console.log(typeof {}); // object
console.log(typeof null); // object(注意这是一个历史遗留问题,null被错误地判断为"object")
console.log(typeof undefined); // undefined

console.log(typeof null); // object(注意这是一个历史遗留问题,null被错误地判断为"object")

原因

当JavaScript在内部判断一个值的类型时,会使用一个表示类型的标记位。在表示对象的标记位中,null的值为全零,而表示对象的标记位必须至少有一个位为1。由于null的标记位全零,JavaScript将其错误地判断为"object"类型。

优点:能够快速区分基本数据类型

缺点:不能将 Object、Array 和 Null 区分,都返回 object

方法二: 2.instanceof

instanceof操作符可以检测一个对象或者引用类型是否属于某个类或构造函数。
还可以在继承关系中用来判断一个实例是否属于它的父类型。

console.log(1 instanceof Number); // false
console.log(true instanceof Boolean); // false
console.log("str" instanceof String); // false
console.log([] instanceof Array); // true
console.log(function () {} instanceof Function); // true
console.log({} instanceof Object); // true

优点:能够区分 Array、Object 和 Function,适合用于判断自定义的类实例对象

缺点:Number,Boolean,String 基本数据类型不能判断

instanceof 和 typeof 的区别

typeof 在对值类型 number、string、boolean 、null 、 undefined、 以及引用类型的 function 的反应是精准的;但是,对于对象{ } 、数组[ ]null 都会返回 object

为了弥补这一点,instanceof 从原型的角度,来判断某引用属于哪个构造函数,从而判定它的数据类型。

方法三:.Object.prototype.toString.call() (最优方案)

这种方法可以准确地返回一个表示值类型的字符串。它适用于所有数据类型,并且可以区分出数组、对象、函数等复杂类型。

var toString = Object.prototype.toString;
console.log(toString.call(1)); //[object Number]
console.log(toString.call(true)); //[object Boolean]
console.log(toString.call("mc")); //[object String]
console.log(toString.call([])); //[object Array]
console.log(toString.call({})); //[object Object]
console.log(toString.call(function () {})); //[object Function]
console.log(toString.call(undefined)); //[object Undefined]
console.log(toString.call(null)); //[object Null]

优点:精准判断数据类型

缺点:写法繁琐不容易记,推荐进行封装后使用

原理:toString()方法会返回一个表示该对象的字符串Object.prototype获取我们对象的原型。.call是为了改变toString函数内部的this指向并,将要检测的值作为方法的上下文(即this),我们可以确保返回的字符串是准确的对象类型,同时也防止toString()方法被重写文章来源地址https://www.toymoban.com/news/detail-510018.html

到了这里,关于如何对JS 中的数据类型进行检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js数据类型和判断数据类型的方法

    js数据类型 1.基本数据类型(原始类型): number boolean string null:空对象 undefined:未定义 Symbol(es6新增): 表示独一无二的值。 为了解决对象实例新的方法与已有方法名冲突问题 。 每个从 Symbol() 返回的 symbol 值都是唯一的,从而确保每个属性的名字都是独一无二的。 Sym

    2024年02月07日
    浏览(45)
  • 检测数据类型的四种方法

    一、数据类型: 1、基本数据类型:String、Number、Boolean、Null、Undefined、Symbol 、BigInt 2、引用数据类型:Object、Array、Function、Date、RegExp 二、检测数据类型的四种方法 1.typeof检测   特点:typeof只能检测基本数据类型(除了null),不能准确的检测引用数据类型。 object、array、

    2024年02月15日
    浏览(47)
  • android 如何进行内存泄漏检测及解决方法

    内存泄漏是在Android开发中常见的问题之一,它可能导致应用的内存占用逐渐增加,最终影响应用的性能和稳定性。以下是一些常见的方法来进行内存泄漏检测和解决: 1. 使用工具进行内存泄漏检测: Android Profiler: Android Studio提供的Android Profiler工具可以帮助您监视应用的内

    2024年02月07日
    浏览(51)
  • js中如何判断一个变量的数据类型?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月09日
    浏览(41)
  • 使用js编写一个函数判断所有数据类型的通用方法

    一、判断数据类型的方法 1、typeof 在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种。 对于数组、对象来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串。 要想区别对象、数组单

    2024年02月22日
    浏览(51)
  • 【图解面试】JS系列 - 如何回答数据类型相关问题(上)

    知识点大纲 语言组织(示例) 要点:数量 → 种类 → 区别 JS中的数据类型主要有 8 种,分为两大类 基础数据类型 和 引用数据类型 基础数据类型中主要有 Number、String、Boolean、Null、Undefined、Symbol和BigInt 引用数据类型有Object,Object下又有一些内置的子类主要分为基础引用类

    2024年01月16日
    浏览(34)
  • js常用判断数据类型方法以及优缺点 以及 instanceof 原理实现

    使用typeof操作符可以 判断一个值的数据类型 。它返回一个表示数据类型的字符串。 优点:typeof 操作符是一种简单、快速的方式来 判断基本数据类型 。它返回的结果是一个字符串,可以直接用于条件判断。 缺点: 对于引用类型(除了函数)的判断结果都是\\\'object\\\' ,无法细

    2024年02月12日
    浏览(45)
  • 在 TypeScript 中有效地使用 keyof 和 typeof 来表示类型

    在本文中,我们将学习如何通过组合类型运算符和枚举来提取和声明常量类型 typeof ,以使您的代码库得到优化。 keyof 为了获得更好的编码体验,您应该在 IDE 中安装 TypeScript,例如VSCode。它将为您提供许多基本功能,例如错误突出显示、IntelliSense、linting 等...您还应该安装一

    2024年02月11日
    浏览(40)
  • 睿智的目标检测64——目标检测中的MixUp数据增强方法

    哈哈哈!我再来一次数据增强! https://github.com/bubbliiiing/object-detection-augmentation MixUp数据增强方法在最新的几个Yolo算法中得到了广泛的应用,特别在YoloX中,s、m、l、x四个型号的网络都使用了MixUp数据增强。nano和tiny由于模型的拟合能力一般没有使用MixUp,但也说明了MixUp具有强

    2024年02月01日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包