JavaScript 中的数据类型可分为两类:基本数据类型(也称为原始数据类型)和复杂数据类型(也称为引用数据类型)。具体而言,JavaScript 支持以下数据类型:
基本数据类型(Primitive Types)
1,字符串类型(String)
- 字符串是文本的数据类型,使用单引号(')或双引号(")括起来表示。
- JavaScript中的字符串是不可变的,即一旦创建,就不能改变其值(虽然可以改变字符串变量的值,使其指向另一个字符串)。
- 字符串中的每个字符都有一个索引,索引从0开始。
- ES6引入了模版字符串(template strings),使用反引号(`)括起来,可以嵌入变量和表达式。
2,数值类型(Number)
- 数值类型用于表示数字,包括整数和浮点数。
- JavaScript中的数字均采用IEEE 754标准定义的64位浮点格式表示,但在某些情况下(如数组索引)会基于32位整数处理。
- 数值类型可以表示极大或极小的数字,超出范围的数字会表示为Infinity(正无穷)或-Infinity(负无穷)。
- 特殊值NaN(Not-a-Number)用于表示某些非数值的操作结果。
3,布尔类型(Boolean)
- 布尔类型只有两个值:true和false,用于表示逻辑上的真和假。
4,未定义类型(Undefined)
- 当声明了一个变量但没有给它赋值时,它的值就是undefined。
- undefined是JavaScript中的一个预定义的全局变量,表示“缺少值”。
5,空类型(Null)
- null表示一个空值,是一个只有一个值的特殊类型。
- 从逻辑上看,null表示一个空对象的指针,这也是为什么使用typeof检测null时结果为"object"的原因。
6,Symbol类型(ES6新增)
- Symbol是一种原始数据类型,用于创建唯一的标识符。
- Symbol类型的值可以作为对象的属性名,以避免命名冲突。
- Symbol可以通过Symbol()函数或Symbol.for()函数创建,后者创建的Symbol是全局的,可以重复获取。
7,BigInt类型(较新,ES2020引入)
- 用于表示大于2^53 - 1的整数。BigInt提供了一种方法来表示任意大小的整数。
- 任意精度:BigInt可以表示任意精度的整数,解决了之前JavaScript中Number类型整数溢出的问题。
- 不可变性:BigInt的值是不可变的,即一旦创建,其值就不能被改变。
- 与Number的区别:BigInt与Number类型不是严格相等的,它们之间不能直接进行算术运算,除非先将它们转换为同一类型。
复杂数据类型(Reference Types)
- 对象类型(Object)对象是一种复杂的数据类型,用于存储键值对集合。JavaScript中的数组、函数、日期等都是对象的一种特殊形式。对象属性名可以是字符串或Symbol类型。
- 数组类型(Array)数组是一种特殊的对象,用于存储一系列有序的值。数组的每个值称为元素,可以通过索引访问。数组索引从0开始,可以是整数或字符串(但通常使用整数)。
- 函数类型(Function)函数是JavaScript中的一等公民,可以作为变量赋值、作为参数传递、也可以作为返回值。函数用于定义可重复使用的代码块,可以接收参数并返回结果。
- 其他特殊对象类型 如正则表达式(RegExp)、日期(Date)等,它们都是基于对象类型的特殊构造器创建的。
总结
JavaScript 数据类型多种多样,涵盖了七种基本数据类型(字符串、数值、布尔、未定义、空、Symbol、BigInt)以及多种复杂数据 Object 类型(对象、数组、函数等)。掌握这些数据类型的特点和应用方法,对于编写高效、可维护的 JavaScript 代码具有重要意义。