javascript的栈和堆的区别?

JavaScript08

javascript的栈和堆的区别?,第1张

js变量存储有栈和堆存储,访问时一种是按值一种是按引用,基础变量是按值,新建的时候就是建立一个独立的副本已经与等号右边的值没有关系。对象是按引用访问,新建的时候只是一个对象的引用而已它代表这个对象。

这很好理解,比如说这么个函数:

function sum(i)

{

if (i == 1) return 1

return i + sum(i - 1)

}

显然,这是一个递归函数,函数自己调用自己。

那么每个调用,都必须保存一个i的变量。

此时就要用堆栈。堆栈的栈顶始终保持着函数的局部变量。当函数返回,则往回收缩,这多方便。

而堆呢?适合全局的、一般的存储。