美文网首页
js变量的存储问题

js变量的存储问题

作者: 莫劼 | 来源:发表于2018-08-28 15:23 被阅读0次

首先介绍在js中变量有两种:1、基本变量 2、引用变量

1.基本变量:String、Number、Boolean、null、undefined等等

2.引用变量:Array(特殊的对象)、Object、Date(日期)、Function、RegExp(正则表达式)等等。概念:当声明一个变量为对象数据类型时,在堆内存中开辟了一个空间,用来存储这个值。把这个值的地址返回给变量。

基本变量是储存在栈中引用变量式储存在堆中。

什么叫栈?

    在百度百科有定义:栈是限定仅在表头进行插入和删除操作的线性表。

    栈是数据存储的临时地方,比如仓库,将货物存储在仓库中,需要的时候取出,当取货的时候会先将最后进的货先取出,再将最早进去的货取出,这就有一种先进后出的说法。栈是一种数据结构,是一种只有唯一的一个出口,也就是只能有一端可以进行添加或删除的一种特殊线性表。栈底是固定的,只有栈顶才是浮动的。如果栈中没有元素时,就叫做空栈。另外栈是具有记忆功能的,对栈的插入与删除是不会影响栈底的指针的。

基础变量是直接存储在栈中,下面介绍下基础变量的互相赋值!

    var  num1 = 123;

    var  num2 = num1;    

    下面通过画图进行讲解:

基础类型表现图

什么叫堆?

    在百度百科有定义:是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:1.堆中某个节点的值总是不大于或不小于其父节点的值;2.堆总是一棵完全二叉树。在此就不扩展开讲堆的概念。

引用数据是存储在堆中,存储在栈中的值是一个指针,指向存储在堆中的实际对象 ,下面用图介绍一下引用数据在堆内如何储存的。

栈与堆简单表现图

    var obj = {}      假如创建一个对象,obj这个变量代表的值是对象的地址,也就是obj =0x131234,obj这个变量是储存在栈中,跟基础变量可以一样的理解,只是存储的数据是地址而已。当对象创建的时候,内存会在堆内给开辟个空间用于存放这个对象的数据。像name、age、功能都存在这个空间中,虽然放在堆中的空间可以进行不断的扩展,但是放置在堆内的数据,查询的起来效率会很低。

    注意:(数组是特殊的对象)当我创建一个数组时,var arr = new Array();var arr1=arr;这个arr的中储存的地址赋值给了arr1.所有这两个变量是互相影响的。形象点讲:当一个商人请来两个清洁工打扫院子,这两个清洁人是分开时间点独自来打扫院子的, 商人给这两个清洁工的地址是一样的,打扫的地方一样。假如有一天甲清洁工因不小心将院子烧了,那么另一个清洁工是不是打扫的院子就也被烧了?答案是肯定的,两个人打扫的院子是同一个院子,要毁就是一起毁。

    这就是引用数据类型的存储方式。

相关文章

  • js变量的存储问题

    首先介绍在js中变量有两种:1、基本变量 2、引用变量 1.基本变量:String、Number、Boolean、...

  • 什么是浅拷贝?什么是深拷贝?

    解决这个问题的前提是:了解过js的变量存储类型、赋值。 懂的就跳过 ============== 变量存储类型分两...

  • JS的变量存储

    js中数据类型包括原始类型和引用类型,其中原始类型(primitives types):undefined,nul...

  • js 执行上下文,作用域,变量内存管理

    js 执行上下文,作用域,变量内存管理 JS中变量的定义在内存中包括三个部分:* 变量标示(变量标示存储在内存的栈...

  • 我的JS笔记 -- 变量

    变量是存储信息的容器,在JS中,变量是松散类型的,所以JS中的变量可以用来保存任何类型的数据。所以变量是没有类型的...

  • js的深拷贝与浅拷贝及实现方法

    前提 理解深拷贝和浅拷贝之前,我们先理解下js变量的存储方式。 js变量分为基础类型(Undefined、Null...

  • js数组

    js数组 变量用来存储数据,一个变量只能存储一个内容。如果你想存储多个内容,那么就可以用数组解决,一个数组变量可以...

  • JavaScript-总结篇之变量类型

    JS中使用typeof能得到哪些类型? 何时使用===何时使用==? JS中有哪些内置函数? JS变量按照存储方式...

  • 数据地图--前台JS代码

    前端 datamap_search.js 数据地图的控制js 变量:treeParam 原先用来存储树相关信息的,...

  • 关于typeof 和instanceof 原理问题

    一、typeof 原理 js 在底层存储变量的时候,会在变量的机器码的低位1-3位存储其类型信息 000:对象01...

网友评论

      本文标题:js变量的存储问题

      本文链接:https://www.haomeiwen.com/subject/tzhfwftx.html