JavaScript 学习笔记3

第四章 变量,做用域和内存问题函数

1.变量指针

可保存两种类型的值:基本类型值和引用类型值。对象

基本类型值源于五种基本数据类型。内存

基本类型值和引用类型值的对比:作用域

1).基本类型值在内存中占据固定大小的空间,所以被保存在栈内存中it

2).从一个变量向另外一个变量赋值基本类型的值,会建立这个值的一个副本变量

3).引用类型的值是对象,保存在堆内存中扩展

4).包含引用类型值的变量实际包含的不是对象自己,而是一个指向该对象的指针搜索

5).从一个变量想另外一个变量赋值引用类型的值,复制的实际上是指针,所以两个变量最终都指向同一个对象数据类型

6).肯定一个值是哪一种基本类型能够使用typeof操做符,而肯定一个值是哪一种引用类型能够使用instanceof操做符

2.传递参数

访问变量有按值和按引用两种方式,而参数只能是按值传递的。

3.执行环境和做用域

1.)执行环境有全局执行环境和函数执行环境之分

2.)每次进入一个新执行环境,都会建立一个用于搜索变量和函数的做用域链

3.)函数的局部环境不只有权访问函数做用域中的变量,并且有全访问其包含环境,乃至全局环境

4.)全局环境只能访问全局环境中定义的变量和函数,而不能直接访问局部环境中的任何数据

5.)变量的执行环境有助于肯定应该合适释放内存

做用域链:因为js的变量都是对象的属性,而该对象可能又是其它对象的属性,而全部的对象都是window对象的属性,因此这些对象的关系能够看做是一条链 
链头就是变量所处的对象,链尾就是window对象

with语句主要用来临时扩展做用域链,将语句中的对象添加到做用域的头部

4.垃圾收集

1.)离开做用域的值将被自动标记为能够回收,所以将在垃圾收集期间被删除

2.)最主流:"标记清除"

相关文章
相关标签/搜索