js数据类型判断

2022/8/8 JavaScript

# JS的数据类型

# JS的数据类型分为以下两类

  1. 基本(原始)类型:String Number Boolean Null Undefined Symbol BigInt
  2. 引用(对象)类型:Object Array Date Function RegExp 基本包装类型

# 基本类型和引用类型的区别

  1. 储蓄方式不同,基本数据储存在栈内存,引用类型存储在堆内存(引入地址还是在栈内存上)
  2. 原始类型不能携带属性和方法 question

# 为什么字符串有length属性 ?

let a='123'
a.b=1
console.log(a.b) //undefined
console.log(a.length) //3

如上代码a是一个字符串,向a上挂b属性,打印确实undefined而s.length打印确实3。
因为let a='123'等于let a =new String(123).他被new啦就一定会返回一个对象,所以a可以被称为字符串对象,字符串被创建出来的时候,会返回携带字符串对象
所以他具备方法和属性,但是被计算机访问的时候,发现他是一个类型,就会自动delete删除,所以他就访问不到啦,所以打印a.b的时候是undefined不是报错,至于为什么a.length可以打印,只能说不会报错。不能说真的有这个属性

# JS的类型判断方式

# Object.prototype.toString.call()

嘎嘎厉害的判断方式,单词越长语法越牛,这个方法可以判断任何的类型,返回的是一个字符串 dd

上图所示他会返回一个字符串,但是我们只想要后面的内容,我们可以用slice方法封装一个函数

function myflag(target){
   return Object.prototype.toString.call(target).slice(8,Object.prototype.toString.call(target).length-1)
}

这样,就能得到变量类型的字符串,如下图返回'Boolean'

# typeof()

这个方法用来准确判断基本类型,返回一个字符串

  • 为什么判断null会返回'object'
    • 因为null转换为二进制时全是000000···,又因为object二进制是以000开头,所以000开头的会被计算机判定为object,null也就阴差阳错的被判定成object类型了。
  • 判断引用数据类型会返回'object',函数会返回'function'

# instanceof()

判断类型为引用类型,返回一个布尔值,左侧是判断的值,右侧是数据类型


# 特定的判断方法

  • 数组的方法isArray()返回布尔值
  • 不合法数字isNaN(),合法数字false不合法tru

# JS的类型转换

# 显示类型转换,人为操作

  • 转化为 Number 类型:Number() / parseFloat() / parseInt()
  • 转化为 String 类型:String() / toString()
  • 转化为 Boolean 类型: Boolean()
Last Updated: 2022/10/10 14:34:22