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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PhpStorm常用的一些快捷键

    PhpStorm常用的一些快捷键

    2021年9月18日
    57
  • Druid连接池的意义以及使用

    Druid连接池的意义以及使用建立数据库连接耗时耗费资源,一个数据库服务器能够同时建立的连接数也是有限的,在大型的Web应用中,可能同时会有成百上千的访问数据库的请求,如果Web应用程序为每一个客户请求分配一个数据库连接,将导致性能的急剧下降。数据库连接池的意义在于,能够重复利用数据库连接(有点类似线程池的部分意义),提高对请求的响应时间和服务器的性能。连接池中提前预先建立了多个数据库连接对象,然后将连接对象保存到连接池中…

    2022年7月23日
    4
  • 阿里-中间件团队博客「建议收藏」

    阿里-中间件团队博客「建议收藏」阿里中间件团队博客地址:http://jm.taobao.org/截至2019-03-15日已发布的博客列表:2017双11专题10 2018广东云栖大会1 ACM3 AHAS1 APM1 ARMS8 AlibabaCloudToolkit1 Aliware1 ApacheRocketMQ1 BCP1 CNCF1 Docker1 Dubbo10 Dubbo…

    2022年8月13日
    5
  • DLL文件反编译(附:工具下载链接)

    DLL文件反编译(附:工具下载链接)前几天写程序的时候电脑突然坏了,代码没有提交,已经更新过了,也就是说写的东西,除了DLL文件之外没别的东西了,代码全都没了,突然灵光一闪,想到了反编译。说干就干。百度上搜了下反编译工具,发现一款名叫“Reflector”的歪果反编译文件的效果不错,接下来,下载,为了方便大家,我直接放在百度云里面了:链接:https://pan.baidu.com/s/1PfxKxKp57pTYnSR3ThlOIg提取码:ohx2复制这段内容后打开百度网盘手机App,操作更方便哦下载下来之后,解压完是这样的:

    2025年7月4日
    1
  • JAVA获取uuid_java uri类

    JAVA获取uuid_java uri类UUID获取以及格式化没有什么描述的直接看代码

    2022年8月10日
    4
  • pytest parametrize fixture_参数化数据

    pytest parametrize fixture_参数化数据前言当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化。官方示

    2022年7月30日
    3

发表回复

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

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