JS判断数据类型的方法有哪些_c语言数据类型

JS判断数据类型的方法有哪些_c语言数据类型javascript判断数据类型的方法

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、typeof 类型判断

缺点:无法区分null 、对象、数组,Map,Set,WeakMap,WeakSet、RegExp等

注意:通过构造函数创建的变量typeof 后是都是object

var a = ''
console.log(typeof a)  // string

a = 0
console.log(typeof a)  // number

a = null
console.log(typeof a)  // object

a = undefined
console.log(typeof a)  // undefined

a = true
console.log(typeof a)  // boolean

a = Symbol()
console.log(typeof a)  // symbol

a = {}
console.log(typeof a)  // object

a = []
console.log(typeof a)  // object

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

a = /\d+/
console.log(typeof a)  // object

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

a = new Map()
console.log(typeof a)  // object

a = new Set()
console.log(typeof a)  // object

a = new WeakMap()
console.log(typeof a)  // object

a = new WeakSet()
console.log(typeof a)  // object

2、instanceof 判断

缺点:

    1、只能判断通过构造函数创建的变量,字面量创建的变量无法判断

    2、只能区分对象是否存在目标对象的原型链上

var a = ''
console.log(a instanceof String)  // false

a = new String('')
console.log(a instanceof String)  // true

// Vue2.6源码,使用 instanceof
function Vue(options){
    if(this instanceof Vue){
    }
}

a = new Vue({})
console.log(a instanceof Vue) // true

3、通过构造函数的名称判断

缺点:

    1、不能判断null和undefined

    2、构造函数的指向是可以改变的,因此会存在类型判断不准确

var a = ''
console.log(a.constructor) // ƒ String() { [native code] }

a = new String('')
console.log(a.constructor) // ƒ String() { [native code] }
console.log(a.constructor.name)  // String

a = 1
console.log(a.constructor.name) // Number

a = false
console.log(a.constructor.name) // Boolean

a = []
console.log(a.constructor.name) // Array

a = {}
console.log(a.constructor.name) // Object

a = new Date()
console.log(a.constructor.name) // Date

a = function(){}
console.log(a.constructor.name) // Function

a = /\d+/
console.log(a.constructor.name) // RegExp

a = Symbol()
console.log(a.constructor.name) // Symbol

a = new Map()
console.log(a.constructor.name) // Map

a = new Set()
console.log(a.constructor.name) // Set

a = new WeakMap()
console.log(a.constructor.name) // WeakMap

a = new WeakSet()
console.log(a.constructor.name) // WeakSet

4、toString方法判断

优点:能够校验所有的数据类型

缺点:不能判断谁是谁的实例

var toString = Object.prototype.toString

var a = null
console.log(toString.call(a))  // [object Null]

a = undefined
console.log(toString.call(a))  // [object Undefined]

a = ''
console.log(toString.call(a))  // [object String]

a = 1
console.log(toString.call(a))  // [object Number]

a = false
console.log(toString.call(a))  // [object Boolean]

a = {}
console.log(toString.call(a))  // [object Object]

a = []
console.log(toString.call(a))  // [object Array]

a = function(){}
console.log(toString.call(a))  // [object Function]

a = Symbol()
console.log(toString.call(a))  // [object Symbol]

a = /\d+/
console.log(toString.call(a))  // [object RegExp]

a = new Map()
console.log(toString.call(a))  // [object Map]

a = new Set()
console.log(toString.call(a))  // [object Set]

a = new WeakMap()
console.log(toString.call(a))  // [object WeakMap]

a = new WeakSet()
console.log(toString.call(a))  // [object WeakSet]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196929.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月17日 下午12:01
下一篇 2025年9月17日 下午12:43


相关推荐

  • cefsharp播放视频_flash播放器手机版

    cefsharp播放视频_flash播放器手机版原生CefSharp组件缺少FlashPlayer,实现内置浏览器功能时,不支持播放flash。若想使用flash播放功能,我们需要在初始化CefSharp组件时,加载flash播放插件,并设置支持flash播放。Chrome浏览器内核的flash插件文件为pepflashplayer.dll,将pepflashplayer.dll文件放在程序运行目录下,加载flash插件的C#代码如下:v…

    2025年11月10日
    7
  • 微信公众平台-微信服务号开发

    文章目录背景:一、微信各个平台介绍二、公众平台介绍三、开发前准备四、服务器配置五、服务器验证六、消息接收七、客服消息八、获取素材九、相关工具十、最终效果展示总结背景:近期接到了涉及微信开放平台和微信公众平台相关的开发需求,开发过程中踩了许多坑,把相关问题整理记录下来以便巩固记忆,并把总结的经验分享出来,本篇分享微信服务号开发,希望可以给大家提供帮助一、微信各个平台介绍1、微信开放平台:面向开发人员,为网站、App提供微信第三方登录功能,为App提供支付功能。2、微信公众平台:对应的是公众号,包括订

    2022年4月12日
    173
  • T100 ERP 开发说明(一)

    T100 ERP 开发说明(一)1 登入 T100 的背景訊息 DGENV s 標準環境 c 客戶環境 CUST 客户名称 TOPENT 企業編號 預設為 99 企業編號維護作業 azzi500 切換企業 TOPENT 企業編號 TOPALM 是否啟用開發需求單 adzi800 TOPCHKOUT 是否可簽出程式 2 资料库结构标准资料库 ds 暂存资料库

    2026年3月26日
    2
  • phpexcel 设置批注_Phpexcel 实例

    phpexcel 设置批注_Phpexcel 实例require once phpexcel PHPExcel php 首先创建一个新的对象 PHPExcelobje objPHPExcel newPHPExcel 设置文件的一些属性 在 xls 文件 gt 属性 gt 详细信息里可以看到这些值 xml 表格里是没有这些值的 objPHPExcel gt getPropertie 获得文件属性

    2026年3月16日
    2
  • Spring的注解@Qualifier用法

    Spring的注解@Qualifier用法Spring 的注解 Qualifier 用法在 Controller 中需要注入 service 那么我的这个 server 有两个实现类如何区分开这两个 impl 呢 根据注入资源的注解不同实现的方式有一点小小的区别下面上铺垫图请忽略我的红线在 Controller 中使用 Autowired 注入时 Qualifier 的意思是合格者 通过这个标示 表明了哪个

    2026年3月19日
    2
  • oracle建表的方法,oracle建表语句

    oracle建表的方法,oracle建表语句Oracle 创建表语句 Createtable 语法详解及示例创建表 Createtable 语法详解创建表 Createtable 语法详解 1 ORACLE 常用的字段类型 ORACLE 常用的字段类型有 VARCHAR2 size 可变长度的字符串 必须规定长度 CHAR size 固定长度的字符串 不规定长度默认值为 NUMBER p s 数字型 p 是位数总长度 s 是小数的长度 可存负数最长 38 位 不够

    2026年3月20日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号