数据存储的位置关系到代码执行过程中数据的检索速度。JavaScript中有四种存储方式。
- 字面量:只代表自身:string、number、boolean、object、array、function、regex、null、undefined(就是不适用new创建的实例)
- 本地变量:使用var定义的数据存储单元
- 数组元素
- 对象元素
每一种数据存储的位置都有不同的读写消耗,对于消耗性能的影响排序:字面量、局部变量 < 数组、对象成员。
为了性能的考虑,可以通过以下方法来定位和规避问题,以及优化代码
管理作用域
作用域链和标识符解析
每一个函数拥有可以编程访问的属性和一系列不能通过代码访问而仅供JavaScript引擎存取的内部属性。其中一个内部属性就是[[Scope]]。
[[Scope]]包含了一个函数被创建的作用域中的几何,这个几何被称函数的作用域链,它取决于那些数据能被函数访问。
函数的作用域在函数创建后就会存在,它的作用域链就插入了一些对象,例如:
function add(num1,num2){
var sum = num1 + num2;
return sum;
}
在创建的时候,就在作用域链插入了一个全局对象,这个对象包含window、navigator和document等。
当函数执行的时候,都会创建一个一个执行环境,每个执行环境都有自己的作用域链,函数执行完毕之后执行环境对应的作用域链会连同