js中的数据类型以及数据类型的判断方法

本文详细介绍了JavaScript中的数据类型,包括基本数据类型和引用数据类型,并提供了利用typeof和instanceof进行数据类型判断的方法。同时,探讨了基本数据类型与引用数据类型的存储区别,如基本数据类型存储在栈中,而引用数据类型存储在堆中。此外,还提到了使用constructor获取数据构造函数以及Object.prototype.toString.call()方法来准确判断数据类型。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

数据类型

按照ESMAscript规范可以分为基本数据类型和引用数据类型
基本数据类型:String 、 Number(NaN)、boolean、null、undefined、Smybol、BigInt
引用数据类型:Object、Array,Function、RegExp

判断方法

typeof:常用来判断基本数据类型 除了 null ,null和引用数据类型除了function返回的是function,其他都是返回object

typeof 1 // "number"
typeof '1' //"string"
typeof true //"boolean"
typeof null //"object"
typeof undefined //"undefined"
typeof 1n //"bigint"
typeof Symbol('1') //"symbol"
typeof [] //"object"
typeof {} //"object"
typeof function(){} //"function"
typeof /^[\S+]$/ //"object"

instanceof :常用于判断引用数据类型,Array判断是Object时也为true,判断基本数据类型结果都为false,不能用来判断null和undefined

1 instanceof Number // false
'1' instanceof String //false
true instanceof Boolean //false
null instanceof Number //"object"
[] instanceof Array //true
({}) instanceof Object //true
[] instanceof Object//true
(function(){}) instanceof Function //true
/^[]$/ instanceof RegExp //true

constructor:常用于得到数据的构造函数,不能用来获取null和undefined

[].constructor // ƒ Array() { [native code] }

Object.prototype.toString.call():是js判断数据类型最完美的方法

Object.prototype.toString.call({}) // "[object Object]"
//从得到的字符串中拿到我们想要的解构
//方法1
Object.prototype.toString.call({}).replace(/\[object (\S+)\]/,"$1")//"Object"
//方法2
Object.prototype.toString.call({}).slice(8,-1) // "Object"

基本数据类型和引用数据类型的区别

基本数据类型存储的是原始值,存储在栈中,引用数据类型存储在堆中,对引用数据类型的引用其实就是复制引用数据类型在堆内存中开辟的内存地址
栈:大小固定,常用于存放基本数据类型和引用数据类型的内存地址
堆:大小不固定,存放着基本数据类型的实际值

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值