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


相关推荐

  • Hello CTP(一)——期货基础知识

    Hello CTP(一)——期货基础知识一、期货基础1、期货合约期货合约是指由期货交易所统一制定的、规定在将来某一特定的时间和地点交割一定数量和质量商品的标准化合约。期货合约是买方同意在一段指定时间后按特定价格接收某种资产,卖方同意在一段指定时间后按特定价格交付某种资产的协议。双方同意将来交易时使用的价格称为期货价格。双方将来必须进行交易的指定日期称为结算日或交割日。双方同意交换的资产称为标的。期货交易所严格区分平仓和平今,当天建仓只能用平今指令才能平掉。郑商所和大商所不做区分,大商所平今单不收手续费,鼓励作短线。2、开仓平仓

    2022年5月12日
    34
  • html css制作404页面,CSS3绘制404页面

    html css制作404页面,CSS3绘制404页面标题有点噱了…最近在做一个交通有关的项目,想做一个类似标志牌的404,所以就有了这个.只用的CSS3中的旋转,效果如下上代码:Error.circle{width:200px;height:200px;border-radius:200px;border:15pxsolid#B22727;}.circle>div{color:#B22727;font:bol…

    2022年7月27日
    7
  • 腾讯业务架构:六大事业群

    腾讯业务架构:六大事业群2018年9月29日,腾讯宣布在BU化的基础上进行组织架构调整,将原有七大事业群调整为六大事业群,具体为:a.保留企业发展事业群(CDG)、互动娱乐事业群(IEG)、技术工程事业群(T…

    2022年9月18日
    5
  • java.net.SocketTimeoutException: connect timed out 的解决办法

    java.net.SocketTimeoutException: connect timed out 的解决办法问题概述在项目中使用FastDFSClient上传图片/文件时,一直上传失败的,报错:java.net.SocketTimeoutException:connecttimedout表示连接失败的,错误信息部分截图如下:具体信息如下:2020-03-0816:41:12,423[localhost-startStop-1-SendThread(192.168.159…

    2022年10月20日
    3
  • webpack 核心_学术界最重要的价值基础是

    webpack 核心_学术界最重要的价值基础是前言本质上,webpack是一个用于现代JavaScript应用程序的静态模块打包工具。当webpack处理应用程序时,它会在内部构建一个依赖图(dependencygraph),此

    2022年7月29日
    4
  • validates_email

    validates_email

    2021年8月27日
    68

发表回复

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

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