持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天,点击查看活动详情
铃铛说点题外话
一句话前情回顾:闭包的形成、闭包的弊端、闭包的使用场景和闭包造成问题的解决方式
一句话介绍今天:JS对数据类型的检测
铃铛说正文
- 我们先来说说JS类型有哪些?
- 基础数据类型:String、Number、Boolean、null、undefind、symbol、Bigint
- 复杂数据类型:Object(Array、RegExp、Date、Math、Function等等)
也可以用一幅图片来总结这几种类型
- 接着再来说说这两种数据类型有什么区别?
- 原始数据类型:基础类型存储在栈内存,被引用或拷贝时,会创建一个完全相等的变量;占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。
- 引用数据类型:引用类型存储在堆内存,存储的是地址,多个引用指向同一个地址,这里会涉及一个“共享”的概念;占据空间大、大小不固定。引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
-
那么这两种数据类型在赋值方式上有啥区别呢?
在 JavaScript 中,原始类型的赋值会完整复制变量值,而引用类型的赋值是复制引用地址。
数据类型检测
typeof检测 typeof可以检测出基本数据类型中的Number、String、Boolean、undefined,但是对于基本数据类型的null会判断为Object。对于复杂数据类型会检测出Object、Function,数组和null都会被判断为Object。
跟铃铛说再见
学习的最后一步:放松
今日冷笑话:大家都说你懒是真的是冤枉你了。据我所知,你可勤快着呢,天天清理手机垃圾。
放松结束,猜猜明天会说讲些什么吧