js中的数据类型有哪些:分两类,可直接判定使用
js中的数据类型分为基本数据类型和引用数据类型两大类,共计八种,分别是Undefined、Null、Boolean、Number、String、Symbol、BigInt、Object,其中前七种为基本类型,Object为唯一引用类型,你可通过typeof运算符快速区分绝大多数类型,仅Null和引用类型细分存在判定特例,该分类标准适配ES6及之后所有JavaScript官方语法规范,兼容浏览器端与Node.js运行环境。
js中的基本数据类型
基本数据类型也叫原始类型,存储的是具体数值,赋值、传参时会生成独立副本,修改一个变量不会影响其他关联变量,是js中最基础、使用频次最高的数据类型。
Undefined类型仅有唯一一个值undefined,变量声明后未赋值、函数无返回值、读取对象不存在的属性时,都会得到该值,用于标识变量未初始化的状态。
Null类型仅有唯一一个值null,专门表示空对象指针,是人为主动设置的空值,常用于清空对象、释放引用,和undefined语义完全不同,前者是主动置空,后者是未定义。
Boolean类型仅包含true和false两个布尔值,主要用于条件判断、逻辑运算,js中0、空字符串、null、undefined、NaN会被判定为假值,其余值大多为真值。
Number类型用于存储整数、小数、无穷数和非数值,包含常规数字、Infinity、-Infinity、NaN,该类型存在精度丢失问题,处理超长小数运算时准确率有限,是前端数值运算的常见局限。
String类型为字符串类型,用于存储文本内容,支持单引号、双引号、反引号三种定义方式,可拼接、截取文本,所有字符串操作都不会修改原数据,只会生成新字符串。
Symbol类型是ES6新增的唯一值类型,每个Symbol生成的值都独一无二,不会出现重复,常用来定义对象私有属性、避免对象属性名冲突。
BigInt类型用于解决Number类型整数精度不足的问题,可安全存储和操作任意长度的大整数,定义时需在数字末尾加n,该类型无法与Number类型直接混合运算。
js中的引用数据类型
Object是js中唯一的引用数据类型,数组、函数、正则、日期等所有复杂数据,本质都属于Object的衍生类型,该类型存储的是内存地址,而非具体数据。
引用类型变量赋值时,只会传递内存地址,多个变量会指向同一个内存数据,修改其中一个变量的内容,所有关联变量的值都会同步变化,这是它和基本类型的核心区别。
| 数据类型分类 | 包含类型 | 存储特点 | 赋值特性 |
|---|---|---|---|
| 基本数据类型 | Undefined、Null、Boolean、Number、String、Symbol、BigInt | 存储原始值 | 值拷贝,互不影响 |
| 引用数据类型 | Object(含数组、函数等衍生) | 存储内存地址 | 地址拷贝,相互影响 |
typeof运算符判定类型存在固定特例,typeofnull返回object、typeof数组/正则返回object、typeof函数返回function,这是js语言底层设计导致的固定结果,无法通过常规方式修正。
所有基本类型的值不可变,已定义的原始数据无法被修改,所谓的修改、拼接操作,本质都是销毁旧值、生成新值,仅引用类型的内存数据可直接修改。
