文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

javascript中常量池和堆的区别有哪些

2024-04-02 19:55

关注

本篇内容介绍了“javascript中常量池和堆的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

javascript中常量池和堆的区别:1、常量池用来存放常量和基本数据类型,而堆用来存储复杂数据类型;2、常量池的系统效率较高,而堆需要分配空间和地址,还要把地址存到栈中,所以效率低于栈(常量池)。

javascript中常量池和堆的区别有哪些

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

javascript的内存分为栈内存,堆内存,常量池,常量池一般都归结在栈中

当变量存储的基本数据类型时,该变量的值则存储在栈内存中

当变量存储的是复杂数据类型时,该变量值则是一个js分配的内存地址,该地址指向了在堆内存中的复杂数据类型

栈内存(常量池)由于它的特点,所以它的系统效率较高。 堆内存需要分配空间和地址,还要把地址存到栈中,所以效率低于栈。

栈内存

由于基本数类型占用空间少,大小固定,且被频繁使用,因此保存在栈内存中

以基本数据类型之一的数值型(Number)为例:

当我们声明一个基本数据类型变量时,会在栈内存中存储变量名和具体值

javascript中常量池和堆的区别有哪些

当我们使用console.log(a) 时,我们输出的是对应的值

堆内存

由于复杂数据类型占用空间大,大小不固定,存栈中影响性能,所以存放在堆内存中

javascript中常量池和堆的区别有哪些

当我们声明变量来存储一个复杂数据类型时,会在栈内存中生成一个变量名和一个具体值,而这个具体值是JS分配的一个内存引用地址,这个地址指向了存放在堆内存中,我们所创建的复杂数据类型。当我们调用该变量时,解析器会根据变量对应的引用地址,引用对应的对象。

变量的复制

基本数据类型的复制:

var num1=5;
var num2=num1;

上述代码中,num1和num2其实是两个不同的变量,它们之间的操作互不相关,这是因为在js中,这种变量复制其实是生成一个a变量的副本(即num2=1)

如图

javascript中常量池和堆的区别有哪些

复杂数据类型的复制:

var person={name:'李华'}; //创建一个对象
var per=person ; //进行对象的复制

与基本数据类型变量的复制不同的是,当我们复制复杂数据类型对象时,其本质是复制该变量的内存引用地址,因此person和per引用地址是相同的,它们都引用了同一个对象,无论是操作person还是per,都是在操作内存中的同一个对象

如图:

javascript中常量池和堆的区别有哪些

函数参数的传递其实是一种变量复制

var x=1;
function fun (x){
    var y=x+1;
    
}

“javascript中常量池和堆的区别有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯