目录
- JavaScript有哪些数据类型,它们的区别?
- 数据类型
- 区别
JavaScript有哪些数据类型,它们的区别?
数据类型
JavaScript数据类型有: Undefined、Null、Boolean、Number、String、Array、Object、Symbol、BigInt…
- String(字符串): 表示文本数据,使用单引号或双引号包裹。
let myString = 'Hello, World!'
- Number(数字): 表示数值,可以是整数或浮点数。
let myNumber = 42
- Boolean(布尔): 表示逻辑值,可以是
true
或false
.
let isTrue = true
- Undefined(未定义): 表示未赋值或不存在的值.
let myUndefined
- Null(空值): 表示空值或没有对象值.
let myNull = null
- Symbol(符号): 引入于ES6,表示唯一的、不可变的值.
let mySymbol = Symbol('unique')
- BigInt(大整数): 引入于ES2020,表示任意精度的整数.
let bigIntNumber = 123n
- Object(对象): 表示复杂数据结构,可以包含属性和方法.
let myObject = { key: 'value', number: 42 }
- Array(数组): 一种有序的集合,用于存储一组相关的数据。它可以包含各种类型的元素,包括数字、字符串、对象等。
let myArray = [1, 'Hello', { key: 'value' }, true]
新增类型:
-
Symbol(符号): 代表创建后独一无二且不可变的数据类型,用于解决可能出现的全局变量冲突问题。
-
BigInt(大整数): 是一种数字类型的数据,可以表示任意精度格式的整数,用于安全地存储和操作大整数,即使超出了 Number 能够表示的安全整数范围。
数据类型分类:
-
原始数据类型(栈中存储):
- Undefined、Null、Boolean、Number、String。
- 直接存储在栈中的简单数据段,占据空间小、大小固定,适合存储频繁使用的数据。
-
引用数据类型(堆中存储):
- Object、Array、Symbol、BigInt。
- 存储在堆中的对象,占据空间大、大小不固定。在栈中存储了指向堆中实体的指针,解释器通过指针检索引用值。
堆和栈的概念:
-
数据结构中的栈和堆:
- 栈中数据的存取方式为先进后出。
- 堆是一个优先队列,按优先级进行排序,优先级可以按照大小规定。
-
操作系统中的栈和堆:
- 栈区内存由编译器自动分配释放,存放函数的参数值、局部变量的值等,操作方式类似于数据结构中的栈。
- 堆区内存一般由开发者分配释放,如果开发者不释放,可能由垃圾回收机制回收。
这些数据类型在JavaScript中被广泛使用,可以根据需要选择合适的数据类型来存储和处理数据。注意,JavaScript是一种动态类型的语言,变量的数据类型可以在运行时改变。
区别
-
存储位置:
- 基本数据类型: 存储在栈中的简单数据段,占据空间小、大小固定。
- 复杂数据类型: 存储在堆中的对象,占据空间大、大小不固定。在栈中存储了指向堆中实体的指针,解释器通过指针检索引用值。
-
变量赋值:
- 基本数据类型: 通过值进行赋值,变量直接存储数据的值。
- 复杂数据类型: 存储在堆中,变量存储的是对象的引用,即地址。
-
复制行为:
- 基本数据类型: 拷贝的是实际的值,互不影响。
- 复杂数据类型: 拷贝的是引用,指向同一对象,一个对象的改变会影响另一个对象。
-
比较行为:
- 基本数据类型: 比较的是值是否相等。
- 复杂数据类型: 比较的是引用是否相同,即是否指向同一对象。
-
传递方式:
- 基本数据类型: 通过值传递。
- 复杂数据类型: 通过引用传递。
这些区别影响了变量在内存中的存储和操作方式,了解这些特性有助于更好地理解JavaScript中的数据类型。
持续学习总结记录中,回顾一下上面的内容:
JavaScript数据类型有: Undefined、Null、Boolean、Number、String、Array、Object、Symbol、BigInt…