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]

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ODT珂朵莉树「建议收藏」

    ODT珂朵莉树「建议收藏」珂朵莉树の由来珂朵莉树(或称ODT(OldDriverTree老司机树))这毒瘤算法由CodeForces-896CWillem,ChthollyandSeniorious的正解衍化而来由于其骗分暴力的非正统算法思想虽然很多时候在随机数据下跑时不错但切记这只是骗分暴力,时间复杂度上并不正确什么时候用珂朵莉树珂朵莉树一般用来解决本来应当由线段树解决的区间类问题而使…

  • 16G kingston U盘 解除写保护[通俗易懂]

    16G kingston U盘 解除写保护[通俗易懂]前些天买的16Gkingstonu盘忽然有了写保护,但是拆开u盘又没有看到有写保护开关。纠结加郁闷。然后一天后又忽然发生了电脑无法识别U盘,连盘符也读不出来了。里面好多资料全无,彻底让我伤心了,

  • 异步FIFO_Verilog实现「建议收藏」

    异步FIFO_Verilog实现「建议收藏」异步FIFO_Verilog实现概述:FIFO本质上还是RAM,是一种先进先出的数据缓存器(先存入的数据先取出)。它与普通存储器的区别:没有外部读写地址线,只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1,不像其他存储器可以由地址线决定读取或写入某个指定的地址,异步FIFO读写时钟不同,读写是相互独立的。用途:(1)跨时钟域多bit传输:读写可以由不同的时钟控制,使用异步FIFO可以在两个不同时钟系统之间快速方便的传输数据。(2)数据匹配:对于不同宽度的数据接口可以使用FIFO,

  • DirectShow 简介「建议收藏」

    DirectShow 简介「建议收藏」一、DirectShow简介DirectShow(简称DShow)是一个Windows平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能。它支持多种多样的媒体文件格式,包括ASF、

  • ssh后端框架结构

    ssh后端框架结构ssh框架SSH是struts+spring+hibernate的一个集成框架,是16年之前较为流行的一种Web应用程序开源框架。——摘自百度集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hiberna

  • mysql opkg源_opkg包管理工具常用命令[通俗易懂]

    mysql opkg源_opkg包管理工具常用命令[通俗易懂]Opkg是一个轻量快速的套件管理系统,目前已成为Opensource界嵌入式系统标准。常用于路由、交换机等嵌入式设备中,用来管理软件包的安装升级与下载。常用命令opkgupdate更新可以获取的软件包列表opkgupgrade对已经安装的软件包升级opkglist获取软件列表opkginstall安装指定的软件包opkgremove卸载已经安装的指定的软件包安装要安装软件…

发表回复

您的电子邮箱地址不会被公开。

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