首页 > 代码库 > JavaScript栈和堆内存,作用域
JavaScript栈和堆内存,作用域
1.栈 stack”和“堆 heap”:
简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里。stack一般是静态分配内存,heap上一般是动态分配内存。
2.基本类型和引用类型:
基本类型:存放在栈内存中的简单数据段。数据大小确定,内存空间大小可以分配。
引用类型:存放在堆内存中的对象,变量中实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。
详见《Javascript高级编程》Page60页的图可以很清晰的理解上面两个概念。
3.内存变量的存储空间:
这是js机制生存的原因。只有理解这种存储空间的分配才可以更好的理解js和写出更加高效的代码。
4.值传递和引用传递问题:
前者内存中的值不发生变化,后者内容中的值发生变化。
将js中的function(){} 函数的参数理解成局部变量,只有在function里面是有作用的。
5.执行环境(作用域)
1. 执行环境决定了变量的生命周期,一些代码可以访问变量的权限。这种机制有助于何时释放内存。
2.分全局执行环境(window)和函数执行环境。
3.函数的局部环境可以访问函作用域的变量,而且有权访问包含(父)环境中的变量
4.全局环境不能访问函数环境中的变量。
6.JS是一门具有自动垃圾回收机制的语言
我们不好考虑内存分配和回收的问题,和C++不一样
JavaScript栈和堆内存,作用域
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。