我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript是怎样进行变量的内存分配

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript是怎样进行变量的内存分配

本篇文章为大家展示了JavaScript是怎样进行变量的内存分配,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

JavaScript的所有变量(包括函数)在整个处理过程中都是存放在内存中,所以要对一个变量进行处理。首先得为变量分配内存。JavaScript内存分配和其他语言一样,是根据变量的数据类型来分配内存的,而JavaScript变量的数据类型由所赋的值的类型所决定的。JavaScript支持的数据类型可分为两大类:基本数据类型和复杂数据类型。其中基本数据类型包含了数字(number)类型、字符串(string)类型、布尔(boolean)类型、未定义(undefined)类型、空(null)类型;复杂类型包含了对象(object)类型,在JavaScript中数组、函数都属于对象类型。除了基本数据类型以外的数据类型全都是对象类型。在JavaScript中,基本数据类型变量分配在栈内存中,其中存放了变量的值,对其是按值访问的;而对象类型的变量则同时会分配栈内存和堆内存,其中栈内存存放的是地址。堆内存存放的是引用的值,栈内存存放的地址指向堆内存存放的值。对该变量的访问是按引用来访问的,即首先读取到栈内存存放的地址,然后按地址找到堆内存读取其中的值。

JavaScript之所以按变量的不同数据类型来分配内存,主要原因是栈内存比堆内存小,而且栈内存的大小是固定的,而堆内存大小可以动态变化。基本数据类型的值的大小固定,对象类型的值大小不固定,所以将它们分别存放在栈内存和堆内存是合理的。

function Student (id,sno,name,age){ //函数定义,Student是一个函数变量    this.id = id;    this.sno = sno;    this.name = name;    this.age = age; } var num = 20; //num  是一个数字变量 var bol = false; //bol 是一个布尔变量 var str = "student"; //str 是一个字符串变量 var obj = {}; //obj是一个对象变量 var arr = ['a','b']; //arr是一个数组变量  var student = new Studenta(1,"199706010016","maomin",23); //student是一个对象变量

上述代码中的Student变量定义了一个构造函数,函数的定义代码存放在堆内存中,该内存对应的地址存放在Student函数变量中。构造函数用于创建对象实例,最后一行代码正是使用了该构造函数来创建了一个名字叫maomin的学生对象实例。学生实例创建完后会返回其在堆内存中分配的地址,该地址被赋给了student变量。

上述代码中的{}在堆内存中创建了一个空对象,该对象的堆内存中的地址被赋给了obj的变量。['a','b']是一个元素值分别为'a','b'的数组对象,该对象也在堆内存中存放,其对应的地址赋给了arr变量。除了Student、obj、arr和student这几个变量为对象变量外,其他几个变量num、bol、str都是基本数据类型的变量,因而它们都存在栈内存中。

基本数据类型的变量值存储在栈内存,而对象类型变量,包括函数、数组和对象,在栈内存中存储的只是引用对象的地址,该地址为对象在堆内存分配的地址,因而通过该地址可以找到对象类型的变量值。

上述内容就是JavaScript是怎样进行变量的内存分配,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

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

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

JavaScript是怎样进行变量的内存分配

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎样进行oracle的内存分配和调优

今天就跟大家聊聊有关怎样进行oracle的内存分配和调优,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 一直都想总结一下oracle内存调整方面的知识,最近正好优化一个
2023-06-06

java是如何进行内存分配的

具体的概念:JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method,也叫静态区)。分配情况:堆区: 1、存储的全部是对象,每个对象都包含一个与之对应的class的信息(class的目的是得到操作指令) ;2、jvm只有一个堆区(hea
java是如何进行内存分配的
2021-01-02

JVM中内存分配策略是怎么样的

小编给大家分享一下JVM中内存分配策略是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!内存分配策略 了解GC其中很重要一点就是了解JVM的内存分配策略
2023-06-02

java 进程是如何在Linux服务器上进行内存分配的

众所周知,Java进程在启动的时候我们可以通过 -Xms 和-Xmx来设置内存的上限和下限。直到我发现使用top命令监控的Java进程在-Xms设置4g的情况下占用的内存并不是4g,这就产生了一个疑问Linux服务器的内存到底是如何进行分配
2022-06-03

怎么在CentOS中对程序内存进行分配

怎么在CentOS中对程序内存进行分配?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。[cpp] view plaincopy在CODE上查看代码片派生到我的代码片 #incl
2023-06-07

JavaScript内存泄漏的情况是怎样的

这期内容当中小编将会给大家带来有关JavaScript内存泄漏的情况是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、意外的全局变量。function foo(arg) { bar = "t
2023-06-25

Golang程序中变量的内存分配与存储位置详解

标题:Golang程序中变量的内存分配与存储位置详解在Golang中,变量是程序中存储数据的基本单元。在编写Golang程序时,了解变量的内存分配和存储位置对于优化程序性能和避免内存泄漏非常重要。本文将深入探讨Golang程序中变量的内存
Golang程序中变量的内存分配与存储位置详解
2024-02-28

怎样进行Linux网络配置的分析

本篇文章给大家分享的是有关怎样进行Linux网络配置的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。进入Linux界面后,右击选择open terminal:会出现命令行窗
2023-06-06

Linux动态内存配置与及时备份是怎样的

Linux动态内存配置与及时备份是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Linux动态内存配置动态内存配置是一项在 Hyper-V 中可选择使用的技术之一,如
2023-06-16

探索Java中的静态变量与实例变量:存储区域、生命周期以及内存分配方式的区别

文章目录 静态变量实例变量不可变对象静态变量和实例变量有什么区别?静态变量实例变量 Object 类都有哪些公共方法?Java 创建对象有哪几种方式?a==b 与 a.equals(b) 有什么区别?总结 &#
2023-08-17

基于 Spark 的数据分析实践是怎样进行的

今天就跟大家聊聊有关基于 Spark 的数据分析实践是怎样进行的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。引言:Spark是在借鉴了MapReduce之上发展而来的,继承了其分布
2023-06-02

C/C++中多进程之间的线程如何利用XSI IPC共享内存分配互斥量进行同步

这篇文章主要介绍了C/C++中多进程之间的线程如何利用XSI IPC共享内存分配互斥量进行同步,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。#include
2023-06-03

Java中的JVM是如何实现内存管理的?(请解释Java虚拟机(JVM)如何进行内存分配与回收?)

Java虚拟机(JVM)通过自动内存管理机制,在Java程序运行时管理内存分配和回收。新创建的对象分配到堆内存的年轻代,称为伊甸园,存活时间增长后晋升到幸存者区域,再晋升到年老代。JVM使用不同的垃圾回收器,如标记-清除、复制和标记-整理,清除垃圾对象。此外,JVM还提供其他内存管理机制,如本地内存、栈内存和方法区,确保程序稳定运行。
Java中的JVM是如何实现内存管理的?(请解释Java虚拟机(JVM)如何进行内存分配与回收?)
2024-04-02

编程热搜

目录