持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
对于入门Javascript,我们肯定要从最基本的变量和类型开始学习起,本文根据大致知识点,总结成表格的形式,更清晰进行总结归纳。
语言类型
Javascript分为基本类型和引用类型
| 基本类型 | 引用类型 |
|---|
| 包含 | undefined、null、Boolean、Number、String、Symbol 、BigInt | Object |
| 存储 | 保存在栈内存中 | 栈区内保存变量标识符,堆内存存储对象的地址。 |
| 区别 | 值不可变,无属性无方法,可进行值比较 | 值是可变的,可以为引用类型添加属性和方法,也可以删除其属性和方法 |
基本类型
| 类型 | 描述 |
|---|
| undefined | 表示未定义,并非关键字,是从未赋值的自然状态 以下情况会返回undefined: 函数默认返回undefined、获取对象不存在的key、获取数组不存在的下标、声明变量,不初始化值 |
| null | 表示定义了但是为空,是关键字。语义是空值,只有一个值,就是 null |
| Boolean | true/false |
| Number | 数值 |
| String | 字符串 |
| Symbol | 表示独一无二的值,是ES6引入的新类型,是一切非字符串的对象key的集合 |
| BigInt | 可以用任意精度表示整数。目的是为了安全地存储和操作大整数,甚至可以超过数字的安全整数限制 |
判断JavaScript数据类型的方式
| 方法 | 优点 | 缺点 | 写法 | 原理 |
|---|
| typeof | 简单,使用typeof()函数来判断基础的数据类型 | 只能校验基础类型,且typeof null为object | typeof``1 //输出number | 不同的对象在底层都表示为二进制,在Javascript中二进制前(低)三位存储其类型信息,typeof则根据此来检测 |
| instanceof | 对于引用类型的支持很好 | 无法对原始类型进行判断 | [1,2,3] instanceof Array //输出true | instanceof 检测的是原型,是用来判断 A 是否为 B 的实例 |
| Object.prototype.toString.call | 能检测所有类型 | 写起来繁琐 | Object.prototype.toString.call(a) //输出[object Object] | 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] |
| constructor | 能检测除了null和undefined所有类型 | 易被修改,不可靠 | true.constructor==Boolean //输出true | constructor属性返回对创建此对象的数组函数的引用,就是返回对象相对应的构造函数 |