您的位置:首页 > Web前端 > JavaScript

理解js的内存处理分配

2018-01-22 14:42 211 查看
js的变量可以存放两种类型,即基本类型和引用类型。

基本类型即:null,number,string,boolean,underfined等

引用类型:array,object,function等

基本类型存放于栈中,而引用类型存放于堆中。

举个例子:

function  result(chinese,english,math){

       this.chinese = chinese;

       this.english = english;

      this.math = math;

}

var power = 100%;

var people = true;

var goodstr = "you are right";

var obj = new object();

var arrlist = [1,2,3,4,5];

var result= new result("语文","英语","数学");

于是我们就得到如下的内存分析图:



    从上面我们可以看出power,people,goodstr为基本数据类型;他们的值直接就是放在栈中的,而引用类型:obj,arrlist,result,它们引用变量是存放在栈中的,但是它们却是指向堆中的的实际对象。那引用类型为什么要这样子呢?我们从分析图当中也能看到,我们是没有办法直接去操作堆中的数据的,但是我们可以通过栈中,对堆的对象进行引用从而实现对堆中的数据进行操作。

       那基本数据类型和引用类型为什么要这样存放呢?那是因为栈比堆的运行速度要快得多,而堆比栈的存储量要大得多。在栈中存储的是相对简单的数据类型,它们是相对比较稳定的,所占用的内存也比较的少。而在堆中查找实际对象的时候是一个比较费时间的过程。

总体而言,我们要学好js,从它的存储机制去了解对我们是很有帮助的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js内存机制 js js存储