标识符解析过程:标识符解析过程已决定从哪里获取数据或存储数据。
该过程搜索执行环境的作用域链,查找同名的标识符,搜索过程从作用域的头部开始,也就是当前运行函数的活动对象。如果找到就会使用这个标识符对应的变量,如果没有找到则继续搜索下一个对象,搜索过程会持续进行,直到找到标识符,如没有搜索到匹配的对象,那么标识符就没有定义,在函数执行过程都会经历这样的过程。
一个标识符所在位置越深,它的读写速度就会越慢,因此读写局部变量总是最快的,而读写全局变量通常是最慢的。
With语句和try-catch的catch子句都会改变作用域链
With语句执行时,执行环境的作用域链会被临时改变,一个新的变量对象被创建,它包含了参数指定的对象所有的属性。这个属性被推入作用域的首位,函数的所有的局部变量现在处于第二个作用域链对象中,这样访问代价更大。
当try子句中发生错误,执行过程会自动跳到catch中,把错误对象推入一个新的变量对象并置于作用域的首位。执行完毕后,作用域就会返回原来的状态。
1、尽量少用前套对象
2、把常用的对象成员、数组元素、跨域变量保存在局部变量中,
3、避免使用with语句,小心使用try-catch语句