javascript的栈和堆的区别?

JavaScript028

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

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

出现js堆栈溢出的问题一般的情况有两种:

1、检查自己的js代码看代码中有没有死循环。

2、代码中引用了jQuery-1.4.2.min.js这个js实现一些动态效果或者是辅助,这个版本的jQuery就存在这样的问题(同事就是遇到了这个问题)。

3、解决方案:

4、查询自己的代码,用ie8、ie9自带的js调试工具跟一遍代码看哪里出现了问题。

5、更换jQuery引用版本。

简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。

简单数据类型在存储时,变量中存储的是值本身,因此叫做值类型。

string、number、boolean、undefined、null

null是特殊存在,返回的是object,如果要创建空对象,可以用null。

用new创建的都是复杂数据类型

(1)栈:由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作系统类似于数据结果中的栈。

简单数据类型存放到栈里面

(2)堆:一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。

复杂数据类型存放到堆里面