前端JavaScript篇之JavaScript有哪些数据类型,它们的区别?

发布时间:2024年01月22日


JavaScript有哪些数据类型,它们的区别?

数据类型

JavaScript共有八种数据类型,分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。

  1. String(字符串): 表示文本数据,使用单引号或双引号包裹。
let myString = 'Hello, World!'
  1. Number(数字): 表示数值,可以是整数或浮点数。
let myNumber = 42
  1. Boolean(布尔): 表示逻辑值,可以是 truefalse.
let isTrue = true
  1. Undefined(未定义): 表示未赋值或不存在的值.
let myUndefined
  1. Null(空值): 表示空值或没有对象值.
let myNull = null
  1. Symbol(符号): 引入于ES6,表示唯一的、不可变的值.
let mySymbol = Symbol('unique')
  1. BigInt(大整数): 引入于ES2020,表示任意精度的整数.
let bigIntNumber = 123n
  1. Object(对象): 表示复杂数据结构,可以包含属性和方法.
let myObject = { key: 'value', number: 42 }

新增类型:

  • Symbol(符号): 代表创建后独一无二且不可变的数据类型,用于解决可能出现的全局变量冲突问题。

  • BigInt(大整数): 是一种数字类型的数据,可以表示任意精度格式的整数,用于安全地存储和操作大整数,即使超出了 Number 能够表示的安全整数范围。

数据类型分类:

  • 原始数据类型(栈中存储):

    • Undefined、Null、Boolean、Number、String。
    • 直接存储在栈中的简单数据段,占据空间小、大小固定,适合存储频繁使用的数据。
  • 引用数据类型(堆中存储):

    • Object、Symbol、BigInt。
    • 存储在堆中的对象,占据空间大、大小不固定。在栈中存储了指向堆中实体的指针,解释器通过指针检索引用值。

堆和栈的概念:

  • 数据结构中的栈和堆:

    • 栈中数据的存取方式为先进后出。
    • 堆是一个优先队列,按优先级进行排序,优先级可以按照大小规定。
  • 操作系统中的栈和堆:

    • 栈区内存由编译器自动分配释放,存放函数的参数值、局部变量的值等,操作方式类似于数据结构中的栈。
    • 堆区内存一般由开发者分配释放,如果开发者不释放,可能由垃圾回收机制回收。

这些数据类型在JavaScript中被广泛使用,可以根据需要选择合适的数据类型来存储和处理数据。注意,JavaScript是一种动态类型的语言,变量的数据类型可以在运行时改变。

区别

  • 存储位置:

    • 基本数据类型: 存储在栈中的简单数据段,占据空间小、大小固定。
    • 复杂数据类型: 存储在堆中的对象,占据空间大、大小不固定。在栈中存储了指向堆中实体的指针,解释器通过指针检索引用值。
  • 变量赋值:

    • 基本数据类型: 通过值进行赋值,变量直接存储数据的值。
    • 复杂数据类型: 存储在堆中,变量存储的是对象的引用,即地址。
  • 复制行为:

    • 基本数据类型: 拷贝的是实际的值,互不影响。
    • 复杂数据类型: 拷贝的是引用,指向同一对象,一个对象的改变会影响另一个对象。
  • 比较行为:

    • 基本数据类型: 比较的是值是否相等。
    • 复杂数据类型: 比较的是引用是否相同,即是否指向同一对象。
  • 传递方式:

    • 基本数据类型: 通过值传递。
    • 复杂数据类型: 通过引用传递。

这些区别影响了变量在内存中的存储和操作方式,了解这些特性有助于更好地理解JavaScript中的数据类型。

持续学习总结记录中,回顾一下上面的内容:
JavaScript共有八种数据类型,分别是 Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。

文章来源:https://blog.csdn.net/qq_37255976/article/details/135755131
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。