【JavaScript】简单数据类型 与 复杂数据类型 ① ( 堆内存和栈内存 | 简单数据类型内存存储 | 复杂数据类型内存存储 )

2024-06-13 13:41:57 浏览数 (1)

文章目录
  • 一、简单数据类型
    • 1、简单数据类型简介
    • 2、简单数据类型 null 空类型的特殊性
  • 二、复杂数据类型
  • 三、堆内存和栈内存

一、简单数据类型

1、简单数据类型简介

JavaScript 中 , " 简单数据类型 “ 又称为 ” 基本数据类型 " 或 " 值类型 " , 与 简单数据类型 相对的 " 复杂数据类型 “ 又称为 ” 引用类型 " ;

简单数据类型 在 内存中存储时 , 存储的是 数据值 本身 ;

如 : 存储 number 数字类型的值 888 , 在内存中存储的就是值 888 ;

简单数据类型包括 :

  • string 字符串类型
  • number 数字类型
  • boolean 布尔类型
  • undefined 未定义类型
  • null 空类型

2、简单数据类型 null 空类型的特殊性

null 空类型 比较特殊 , 使用 typeof 运算符获取 null 类型变量的类型时 , 返回的是 object 类型 , 也就是说这是一个 " 空对象 " ;

null 空类型使用场景 : null 空类型 是一个 object 类型 , 可以理解为 " 空对象 " ;

如果定义一个变量 , 想要存储一个对象 , 但是此时对象没有进行赋值 , 可以先赋值为 null 值 ;

代码示例如下 :

代码语言:javascript复制
        // 空类型变量
        var nullVar = null;

        // 输出 : object
        console.log(typeof nullVar);

完整代码 :

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <!-- 设置 meta 视口标签 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>JavaScript</title>
    <style></style>
    <script>
        // 空类型变量
        var nullVar = null;

        // 输出 : object
        console.log(typeof nullVar);
    </script>
</head>

<body>
</body>

</html>
在这里插入图片描述在这里插入图片描述

二、复杂数据类型

复杂数据类型 又称为 引用数据类型 ;

复杂数据类型 在内存中存储时 , 在 栈内存 中 存储的是 堆内存中的地址 , 在 堆内存 中 存储的是 复杂数据类型 的 数据内容 ;

栈内存中存储的地址 指向 堆内存中的数据 ;

复杂数据类型 都是 通过 new 关键字创建的对象 , 这个对象既包括 JavaScript 提供的内置对象 , 也包括用户自己自定义的对象 ;

三、堆内存和栈内存

栈内存 Stack 和 堆内存 Heap 是 内存管理 的 两种主要方式 ;

栈内存 由 操作系统 进行管理 , 自动进行 内存分配 和 内存释放 ;

函数的 参数值 / 局部变量 等值 , 存储到 栈内存中 ;

简单数据类型 的 值 , 直接存储到 栈内存 中 ;

堆内存 由 开发者 手动进行 内存分配 和 内存释放 ;

在高级语言中 , 开发者不进行手动释放 , 由 垃圾回收机制 完成堆内存的回收 ;

复杂数据类型 的 值 , 存储到 堆内存中 , 存储复杂数据类型后 对应的 堆内存的地址 存储到 栈内存 中 ;

0 人点赞