在JS中,变量都是存储在内存中的。内存是计算机硬件中的一种可读写数据存储器,它用来存储计算机正在运行的程序、运行时所需要的数据以及运行之后产生的结果。在JS中,内存分为堆内存和栈内存两种。
JS中的内存与变量存储
内存的概念
在JS中,变量都是存储在内存中的。内存是计算机硬件中的一种可读写数据存储器,它用来存储计算机正在运行的程序、运行时所需要的数据以及运行之后产生的结果。在JS中,内存分为堆内存和栈内存两种。
栈内存
栈内存是一种连续的内存空间,可以自动分配和释放,其中存储函数的局部变量、函数参数、函数的返回值、对象的引用等。当函数运行结束或变量失效时,栈内存中的数据也会被自动释放。
堆内存
堆内存也称为动态内存,运行时需要手动进行内存分配和释放。JS中的对象、数组等复杂数据类型均存储在堆内存中。
变量的存储
在JS中,变量的存储分为两种情况。
基本数据类型
JS中的基本数据类型包括:数字(number)、字符串(string)、布尔值(boolean)、空(null)、未定义(undefined)。这些基本数据类型的值存在栈内存中。由于基本数据类型的值大小固定,因此在栈内存中开辟一个固定大小的内存区域来存储。
以下是对于一些基本数据类型的值在栈内存中的存储方式:
var str = 'hello world'; // 字符串存储在栈内存中
var num = 100; // 数字存储在栈内存中
var bool = true; // 布尔值存储在栈内存中
var n = null; // null存储在栈内存中
var und = undefined; // undefined存储在栈内存中
复杂数据类型
JS中的复杂数据类型包括:对象(object)和数组(array)。由于它们所占的内存空间大小不固定,因此存储在堆内存中,并且将它们的引用(reference)存储在栈内存中。
下面是对象和数组在JS中的存储:
var arr = [1,2,3]; // 数组存储在堆内存中,arr存储在栈内存中
var obj = {name:'Tom', age:18}; // 对象存储在堆内存中,obj存储在栈内存中
示例说明
var a = {name:'Tom', age:18};
var b = a;
console.log(a); // {name:'Tom', age:18}
console.log(b); // {name:'Tom', age:18}
b.name = 'Lucy';
console.log(a); // {name:'Lucy', age:18}
console.log(b); // {name:'Lucy', age:18}
在这个示例中,变量a和b存储在栈内存中,它们的值都是一个指向同一个对象的引用。对象{ name: 'Tom', age: 18 }存储在堆内存中,当变量b修改对象的属性时,变量a也会受到影响。
function foo(name, age){
var a = name;
var b = age;
}
foo('Tom', 18);
在这个示例中,函数foo中的变量a和b存储在栈内存中,当函数foo执行完毕后,栈内存中的a和b也会被释放。
本文标题为:详细谈谈JS中的内存与变量存储


基础教程推荐
- 零基础最详细html和css 2023-10-27
- 使用php jquery ajax从mysql获取图像并在DIV中的html页面中显示它们 2023-10-26
- JavaScript实现斗地主游戏的思路 2023-12-01
- Ajax学习笔记整理 2022-12-18
- AJAX 动态加载后台数据 绑定select的方法 2023-02-22
- JavaScript操作表单_动力节点Java学院整理 2023-02-13
- JavaScript垃圾回收机制(引用计数,标记清除,性能优 2022-08-31
- [vue] 关于性能优化 2023-10-08
- HTML-CSS(五十一)column分栏布局 2023-10-27
- 初探 vite2 + vue3 2023-10-08