首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >js数据类型知识梳理

js数据类型知识梳理

作者头像
心念
发布2023-01-11 20:44:41
发布2023-01-11 20:44:41
1.2K0
举报
文章被收录于专栏:前端心念前端心念

1. 两大数据类型

1.1 基本数据类型

  • Number(数值)
  • String(字符串)
  • Boolean(布尔值)
  • Null(空值)
  • undefined(未定义)
  • symbol(唯一值)

存放于栈内存中。

具有占据空间小,内存固定的特点

基本数据类型的值是不可修改的,只会被替换

1.2 引用数据类型

  • Object
  • Array
  • Date
  • Function
  • RegExp

引用类型存储在堆内存中.

具有占据空间大、内存不固定的特点。 (如果存储在栈中,将会影响程序运行的性能)

引用类型在栈中只保存了指针,而实体保存在堆里。

2. 类型转换

2.1 转为数值

  • Number()

接收一个全数字字符串,转为数值。

只要传的字符串中有一个不是数字的字符,或者没传字符串,就会返回 NaN

  • parseInt()/parseFloat()

接收一个数字开头的字符串,转化为取整/带小数 的数值类型。

只要传的字符串不是数字开头,或者没传字符串,就会返回 NaN

  • 隐式转换

所有运算符:+-*/ == === > < !=

都会隐式转为数值类型

+(加号有特殊情况) ,它既是连接符,也是运算符。

1.只要 + 两边出现字符串,就会变成字符串拼接。

2.当只有 + 后面有值,例如:+"123"等同于Number("123"),会将字符串转换为数字123

2.2 转为字符串

  • toString()

除undefined、null之外,所有类型数据的原型里自带的方法。

对不同类型数据有不同的转化方法,但转出来的数据始终是字符串。

对数字可以转化成制定进制的数字字符串

对字符串转出来效果不变

对布尔值转化成字符串布尔值

对数组会转成扁平化并用逗号隔开的字符串

对对象可以判断对象的类型

  • String()

跟toString效果几乎一样

不同点就是通过传入参数去使用,而不是原型方法的调用

undefined、null也能转

  • 隐式转换

通过 + "" 可转化为字符串,原理是加号两边只要出现字符串就会变成字符串拼接

2.3 转为布尔

除了 0 ""(空字符串) null undefined NaN 会转换成 false 其它都会转换成 true

  • 通过判断符(逻辑非运算符)

!可以转为布尔值并取反

!!可以转为正确的布尔值

  • Boolean()

效果等同于!!

3. 类型判断

3.1 typeof关键字

语法: typeof 数据

  • 适合用来判断基本类型,会返回基本类型的字符串
  • 如果用于判断引用类型,一律返回object,所以不建议
  • 需要注意一点:判断null也会返回object,因为一些特殊原因

3.2 instanceof关键字

语法:数据 instanceof 引用具体类型

  • 只能用来判断引用类型 , 会返回true/false
  • 如果用来判断基本类型,一律返回false
  • 如果instanceof Object 都会返回true,因为引用类型本质都是对象

3.3 constructor

语法: 数据.constructor

  • 基本和引用全都可以判断,会返回类型的构造函数,比较通用的方法
  • console.log([].constructor === Array) //true

3.4 Object.prototype.toString.call()

也是通用的方法,基本和引用全都可以判断,不太常用的一种方法

代码语言:javascript
复制
1var arr = []
2Object.prototype.toString.call(arr) == "[object Array]" //true
3
4var func = function() {}
5Object.prototype.toString.call(func) == "[object Function]" //true
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 两大数据类型
    • 1.1 基本数据类型
    • 1.2 引用数据类型
  • 2. 类型转换
    • 2.1 转为数值
    • 2.2 转为字符串
    • 2.3 转为布尔
  • 3. 类型判断
    • 3.1 typeof关键字
    • 3.2 instanceof关键字
    • 3.3 constructor
    • 3.4 Object.prototype.toString.call()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档