javaScript之 变量作用域和内存问题

Posted oSHYo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript之 变量作用域和内存问题相关的知识,希望对你有一定的参考价值。

javascript高级程序设计》第四章  读书笔记
4.1  基本类型 和 引用类型 的值
1. 基本类型值 包括:Undefined、Null、Boolean、Number 和 String。
  引用类型值 指那些可能由多个值构成的对象。【注意:字符串不是引用类型的】
2. 基本类型 在内存中占据固定大小的空间,因此被保存在栈内存中。
  引用类型 的值是对象,保存在堆内存中。
  【对象的访问地址在栈内存中存放,但该对象的值由堆内存来分配空间】
  【由于对象的值的大小不固定,因此不能把它们保存到栈内存中。但内存地址大小是固定的,因此尅讲内存地址大小保存在栈内存中。】
3. 从一个变量到另一个变量复制 引用类型 的值,复制的其实是指针,因此两个变量最终都指向同一个对象。
4. 确定一个值是哪种基本类型可以用 typeof 操作符,而确定一个值是哪种引用类型可以使用 instanceof 操作符。
5. ECMAScript中所有函数的参数都是按值传递的。
 
相关文章:JavaScript变量——栈内存or堆内存(http://www.tuicool.com/articles/m2queq)

4.2  执行环境 及 作用域
1. 执行环境 有 全局执行环境(全局环境) 和 函数执行环境 之分。
2. 每次进入一个新执行环境,都会创建一个用于搜索变量和函数的作用域链。
3. 变量的执行环境有助于确定应该何时释放内存。
4. 在严格模式下,初始化未经声明的变量会导致错误。
5. 执行环境决定了变量的生命周期。

4.3  垃圾收集
1. JavaScript是一门具有自动垃圾收集机制的编程语言,开发人员不必关心内存分配和回收问题。
 
2. 离开作用域的值将被自动标记为可以回收,因此将在垃圾收集期间被删除。
3. “标记清除”是目前主流的垃圾收集算法,这种算法的思想是 给当前不使用的值加上标记,然后再回收其内存。
4. 另一种是“引用计数”。当代码中存在循环引用现象时,“引用计数”算法就会导致问题。

以上是关于javaScript之 变量作用域和内存问题的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中变量作用域和内存问题

JavaScript 变量作用域和内存问题

JavaScript高级程序设计学习之变量作用域和内存问题

javascript中的变量作用域和内存问题

JavaScript 变量作用域和内存问题

JavaScript(变量作用域和内存问题)