js 的基本数据类型

js 一共有六种基本数据类型,分别是 Undefined、Null、Boolean、Number、String,还有在 ES6 中新增的 Symbol 类型,

代表创建后独一无二且不可变的数据类型,它的出现我认为主要是为了解决可能出现的全局变量冲突的问题。

JavaScript 有几种类型的值

涉及知识点:

  • 栈:原始数据类型(Undefined、Null、Boolean、Number、String)
  • 堆:引用数据类型(对象、数组和函数)

两种类型的区别是:存储位置不同。
原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。

引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能;引用数据类型在
栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实
体。

js 可以分为两种类型的值,一种是基本数据类型,一种是复杂数据类型。

基本数据类型…

复杂数据类型指的是 Object 类型,所有其他的如 Array、Date 等数据类型都可以理解为 Object 类型的子类。

两种类型间的主要区别是它们的存储位置不同,基本数据类型的值直接保存在栈中,而复杂数据类型的值保存在堆中,通过使用在栈中
保存对应的指针来获取堆中的值。

堆和栈的区分

堆和栈的概念存在于数据结构中和操作系统内存中。

在数据结构中,栈中数据的存取方式为先进后出。而堆是一个优先队列,是按优先级来进行排序的,优先级可以按照大小来规定。完全
二叉树是堆的一种实现方式。

在操作系统中,内存被分为栈区和堆区。

栈区内存由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

堆区内存一般由程序员分配释放,若程序员不释放,程序结束时可能由垃圾回收机制回收。

JavaScript基本数据类型以及内存分配相关推荐

  1. 【JavaScript-进阶】详解数据类型,内存分配,API元素对象获取

    目录 前言 1.数据类型 1.简单数据类型和复杂数据类型 2.堆和栈 2.webApi 1.API 2.DOM是啥? 3.如何获取元素? 1.根据ID获取 ​编辑 2.根据标签名获取 3.通过HTML ...

  2. javascript中变量的内存分配,以及const VS let

    作为前端开发者,我们每天都在初始化数不尽的变量.js中有基础数据和引用数据,那么他们是在js内存中是如何分配的呢?如果是初级开发者,可能对此有些模糊不清,那么接下来可以了解下关于变量内存分配,以及co ...

  3. Java实例化对象过程中的内存分配

    问题引入 这里先定义一个很不标准的"书"类,这里为了方便演示就不对类的属性进行封装了. class Book{String name; //书名double price; //价格 ...

  4. Js面向对象和数据类型内存分配(转)

    一 Js基本数据类型以及内存情况 1 Undefined Undefined类型只有一个值undefined,在使用了声明但未初始化的变量的时候,这个变量值就是undefined 1 var hi; ...

  5. 【 C 】经典抽象数据类型(ADT)之内存分配

    C中的一些抽象数据类型(ADT)如链表.堆栈.队列和树等,链表已经在前几篇博文有所讨论,见: [ C ]在单链表中插入一个新节点的尝试(一) [ C ]在单链表中插入一个新节点的尝试(二) [ C ] ...

  6. C++ 高级数据类型(四)—— 动态内存分配

    到目前为止,我们的程序中我们只用了声明变量.数组和其他对象(objects)所必需的内存空间,这些内存空间的大小都在程序执行之前就已经确定了.但如果我们需要内存大小为一个变量,其数值只有在程序运行时 ...

  7. stm32h7内存分配_【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈...

    第9章   STM32H7重要知识点数据类型,变量和堆栈 本章教程为大家介绍数据类型,变量和堆栈的相关知识. 9.1 初学者重要提示 9.2 数据类型 9.3 局部变量和全局变量 9.4 堆栈 9.5 ...

  8. JavaScript内存分配及垃圾回收机制

    JavaScript内存分配及垃圾回收机制 简介 像C语言这样的高级语言一般都有底层的内存管理接口,比如 malloc()和free().另一方面,JavaScript创建变量(对象,字符串等)时分配 ...

  9. 可视化分析js的内存分配与回收

    之前写了一篇文章浏览器是怎么看闭包的,发现有些读者对js内存分配与回收懵懵懂懂,理解文章的配图有些困难,我想主要是因为配图省略了一些细节.今天专门写一篇关于js内存分配回收的文章,帮助大家理解js代码 ...

最新文章

  1. np.squeeze()函数
  2. numpy中的转置Transpose和.T以及轴对换swapaxis
  3. Solid Converter PDF
  4. Postman使用方法示例
  5. 如何设置windows下xampp的phpMyAdmin外网访问?
  6. SpringBoot+jquery实现post提交表单并添加隐藏域属性完成编辑功能
  7. hdu 1698(线段树区间更新)
  8. NSUInteger和NSInteger和int
  9. 10个开源免费的电子商务平台(转自伯乐在线)
  10. Axure元件库:ElementUI元件、蚂蚁金服元件
  11. HBuilder工作笔记002---HBuilder打包IOS应用测试IOS应用
  12. 益智类游戏关卡设计:逆推法--巧解益智类游戏关卡设计
  13. 餐厅点餐系统设计思路
  14. HDU6069 欧拉筛法+约数定理+计算技巧。
  15. js调用打印机打印网页字体总是缩小一号的解决方法
  16. 计算机术语access,计算机英语词汇术语:access(存取,访问)
  17. 为什么计算机关机慢,开机为什么慢?电脑开机速度慢的原因
  18. python进阶数据分析_数据分析--Part 2: Python进阶
  19. 无力吐槽CSDN博客设计
  20. iOS7适配问题总结

热门文章

  1. 解决复制粘贴出现的错误
  2. 砼匠无人值守称重系统硬件图文设置
  3. 【超硬核】从0-1构建UI组件库
  4. 「GATK 4」如何提高HaplotyperCaller的效率
  5. Android获取网络图片的三种方法
  6. 浅析BIM在市政道路设计中的应用
  7. esp32外设使用-MCPWM故障处理模块使用
  8. 安卓手机投屏软件_手机投屏软件,居然支持所有网址......
  9. 01-kernel打补丁,配置,编译流程
  10. fgo1月23号服务器维护,FGO1月23号更新一览 1月23号更新内容详解