「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」
前言
js是单线程编程语言,是开发前端项目的必备语言,它是一种弱类型语言,何为弱类型语言呢?弱类型语言就是说在变量声明的时候并不会直接确定变量的类型,并且变量的类型是可以随时改变的,也就是说假如变量a赋值为字符串,那么它就是一个string类型,你如果再给a赋值一个数字,那么这个变量就是number类型,也就是说变量的类型由值来决定。
数据类型的分类
在js中数据分为两种类型,一种是基本数据数据类型,一种是引用数据类型
- 基本数据类型:string、number、boolean、null、undefined、symbol
- 引用数据类型:object、function等,这两种是比较常用的,不常用的还有date、regExp等 这两种数据类型的最大区别就是基本数据类型存储在栈内存中,可以通过赋值等操作来更改;引用数据类型存储在堆内存中,栈内存存储的是它的引用地址。
转字符串
转字符串可以使用toString()方法和String方法
他们两个的区别是toString()不支持null、undefined,如下图
string()支持对null和undefined的转换
typeof()判断数据类型
如上图可以看到我们可以用typeof()来判断数据属于何种数据类型,但我们可以发现它只能判断基本的数据类型中的number、string、boolean、undefined、symbol以及引用类型中的function,其中判断对象和数组的时候都会返回object,这里要特别注意一下null,返回的也是object
instanceof判断数据类型
这里首先看一下mdn中对instanceof的解释
也就是说只有通过实例对象来创建的数据类型才能使用instanceof来判断,它们分别是Array,Object,Function,如下图
通过constructor来判断数据类型
顾名思义,通过构造器来判断数据类型,这个方法和instanceof类似,也是用于判断有构造函数生成的数据类型,但不同的是它也可以用来判断number、string、boolean、
既可以判断的基本数据类型又可以判断引用数据类型的方法
Object.prototype.toString.call()
Object.prototype.toString.call().slice()//这里加上slice可以截取你想要的结果