javascript的堆栈原理
2018-02-01 15:48
204 查看
首先说明一下Javascript的堆栈概念
栈是先进后出的,就像一个桶,后进去的先出来,它下面本来有的东西要等其他出来之后才能出来。
堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。对于堆,我们可以随心所欲的进行增加变量和删除变量,不用遵循次序。
栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
var a=
1;
操作的是变量实际保存的值。
a = 2;
基本类型变量的复制:从一个变量向一个变量复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的位置上。
var b=
a;
b = 2;
引用数据类型:引用数据类型值指保存在堆内存中的对象。也就是,变量中保存的实际上的只是一个指针,这个指针指向内存中的另一个位置,该位置保存着对象。访问方式是按引用访问。
vara
=
new
Object();
当操作时,需要先从栈中读取内存地址,然后再延指针找到保存在堆内存中的值再操作。
a.name= 'xz';
引用类型变量的复制:复制的是存储在栈中的指针,将指针复制到栈中未新变量分配的空间中,而这个指针副本和原指针指向存储在堆中的同一个对象;复制操作结束后,两个变量实际上将引用同一个对象。因此,在使用时,改变其中的一个变量的值,将影响另一个变量。
var b=
a;
b.sex ='boy';
漏画了,差一条指针。b的引用指针也指向object{sex:'boy'}
b.sex; //'boy'a.name;
//'boy'
堆&栈
两者都是存放临时数据的地方。栈是先进后出的,就像一个桶,后进去的先出来,它下面本来有的东西要等其他出来之后才能出来。
堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。对于堆,我们可以随心所欲的进行增加变量和删除变量,不用遵循次序。
栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
数据类型访问&&复制
基本数据类型:基本数据类型值指保存在栈内存中的简单数据段。访问方式是按值访问。var a=
1;
操作的是变量实际保存的值。
a = 2;
基本类型变量的复制:从一个变量向一个变量复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的位置上。
var b=
a;
b = 2;
引用数据类型:引用数据类型值指保存在堆内存中的对象。也就是,变量中保存的实际上的只是一个指针,这个指针指向内存中的另一个位置,该位置保存着对象。访问方式是按引用访问。
vara
=
new
Object();
当操作时,需要先从栈中读取内存地址,然后再延指针找到保存在堆内存中的值再操作。
a.name= 'xz';
引用类型变量的复制:复制的是存储在栈中的指针,将指针复制到栈中未新变量分配的空间中,而这个指针副本和原指针指向存储在堆中的同一个对象;复制操作结束后,两个变量实际上将引用同一个对象。因此,在使用时,改变其中的一个变量的值,将影响另一个变量。
var b=
a;
b.sex ='boy';
漏画了,差一条指针。b的引用指针也指向object{sex:'boy'}
b.sex; //'boy'a.name;
//'boy'
相关文章推荐
- javascript深拷贝的原理与实现方法分析
- 转载 JavaScript 拖放效果(程序原理+深度分析)
- javascript实现jsonp跨域问题+原理
- Javascript 运动中Offset的bug——逐行分析代码,让你轻松了解运动的原理
- 高性能JavaScript模板引擎原理解析
- 什么是MEAN全堆栈javascript开发框架
- javascript作用域原理
- 什么是MEAN全堆栈javascript开发框架
- jQuery javascript 细节原理剖析
- Javascript 装载和执行 浏览器的渲染原理简介
- JavaScript事件流原理解析
- MEAN全堆栈javascript开发框架
- javascript运行原理,任务队列 同步队列和异步队列
- JavaScript实现数据结构中的队列和堆栈
- javascript——拖拽原理小实例
- JavaScript与C++对象绑定原理及效率分析
- javascript 执行环境细节分析、原理-12
- javascript圆盘抽奖程序实现原理和完整代码例子
- JavaScript模板引擎原理,几行代码的事儿
- JavaScript 模板引擎实现原理解析