4.1 基本类型和引用类型的值
基本类型指的是简单的数据段,引用类型值指那些可能由多个值构成的对象。
对象是一种复合值:它将许多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值
于是,对象也可看做是属性的无序集合,每个属性都是一个名值对。属性名是字符串,因此我们可以把对象看成是从字符串到值的映射
关于复合值和原始值的详细区别:http://www.cnblogs.com/xiaohuochai/p/5108837.html
由于复杂值的大小会改变,所以不能将其存放在栈中,否则会降低变量查询速度,因此其存储在堆(heap)中,存储在变量处的值是一个指针,指向存储对象的内存处
4.2 执行环境和作用域
知识点1:声明提升http://www.cnblogs.com/xiaohuochai/p/5700590.html
知识点2:词法作用域和动态作用域http://www.cnblogs.com/xiaohuochai/p/5700095.html#anchor1
知识点3:理解执行环境和作用域https://www.cnblogs.com/xiaohuochai/p/5722905.html
图示
【1】javascript使用的是词法作用域。对于函数来说,词法作用域是在函数定义时就已经确定了,与函数是否被调用无关。通过作用域,可以知道作用域范围内的变量和函数有哪些,却不知道变量的值是什么。所以作用域是静态的
[注意]通过eval()函数和with语句可以对作用域进行动态修改
【2】对于函数来说,执行环境是在函数调用时确定的,执行环境包含作用域内所有变量和函数的值。在同一作用域下,不同的调用(如传递不同的参数)会产生不同的执行环境,从而产生不同的变量的值。所以执行环境是动态的
4.3 垃圾收集
http://www.cnblogs.com/xiaohuochai/p/8528677.html