Javascript的堆和栈的简单理解

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!doctype html>
< html >
< head >
     < meta  charset = "UTF-8" >
     < title >Javascript中堆和栈的简单理解</ title >
</ head >
< body >
                 
     < script  type = "text/javascript" >
         /*function abc(num) {
             if(num > 3) {
                 abc(--num);
             }
             document.writeln(num);
         }
         abc(5);*/
         //1.上面的打印结果为:3,3,4,注意理解。
                 
                     
         /**
          * 在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆,顺序随意。栈,后进先出(Last-In/First-Out)。
          *
          *
          *
          * 对比
             栈(操作系统):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
             栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放
             堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
             堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些
             堆(数据结构):堆可以被看成是一棵树,如:堆排序
             栈(数据结构):一种后进先出的数据结构
          */
                     
         //2.
         /*var myValue1 = 900;
         function test1(value1) {
             value1 = 90;
         }
         test1(myValue1);
         alert(myValue1); */
         //此时弹出的值还为900,原因:test1(myValue1) → test1(900) ,传入的不是一个栈地址
         //3.
         var myArray1 = [45,90,180];
         function test2(value2) {
             value2[0] = 20;
         }
         test2(myArray1);
         alert(myArray1);
         //结果:20,90,180,原因:test2(myArray1) → test2(地址)
                     
                     
     </ script >
</ body >
</ html >



151318591.png

151321298.png




     本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/1308388,如需转载请自行联系原作者







相关文章
|
9月前
|
存储 JavaScript 前端开发
前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别?
前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别?
72 0
|
算法 前端开发 JavaScript
「LeetCode」JavaScript中的堆⚡️
「LeetCode」JavaScript中的堆⚡️
98 0
「LeetCode」JavaScript中的堆⚡️
|
存储 JavaScript
js 数据类型存储栈和堆
数据类型 空类型:undefined null  值类型:基本数据类型 String Number  引用型:复杂数据类型 Object Array 对象 值类型的值在栈空间存储,引用类型的对象在堆中存储,地址在栈中存储 基本类型(值类型)在调用函数的...
937 0
|
2月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
27 0
|
2月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
70 0
|
3天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习
|
30天前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
1月前
|
前端开发 搜索推荐 JavaScript
编程笔记 html5&css&js 001 学习编程从网页开始
编程笔记 html5&css&js 001 学习编程从网页开始
|
2月前
|
前端开发 JavaScript
从零开始学习前端开发:HTML、CSS、JavaScript入门指南
【2月更文挑战第1天】本文将带领读者从零开始学习前端开发,介绍HTML、CSS和JavaScript的基础知识与应用,帮助读者快速入门前端开发领域。
64 1