javascript中有四种基础的数据存取位置:字面量、变量、数组元素、对象成员。
1.接见字面量和局部变量的速率最快,接见数组元素和对象成员相对较慢。
2.变量在作用域链中的位置越深,接见所需时候越长。
-局部变量位于作用域链的肇端位置,因而接见速率最快;
-全局变量位于作用域链的最末端,因而接见速率最慢。
3.with语句和try-catch中的catch子句能够转变实行环境的作用域链,有时会增添接见价值,应警惕运用。
-with(A)会建立一个变量对象推入作用域链的首位,这个变量对象具有A对象的一切属性
function initUI(){
width(document){//虽然避免了屡次誊写document,然则其他局部变量(如i)处于作用域链的第二个对象中
let bd = body,
links = getElementsByTagName('a'),
i=0,
len = links.length
//其他代码
}
}
-catch()子句会把非常对象推入作用域链的首位,catch代码块内部接见的一切局部变量会被放到作用域链的第二个对象中。
4.嵌套的对象成员会显著影响机能,只管罕用。
如实行时候:location.href < window.location.href < window.location.href.toString()
5.就对象及对象原型来讲,属性或要领在原型链中的位置越深,接见它的速率越慢。
如接见时候:实例属性 < 第一层原型属性 < 第二层原型属性
6.在同一个函数中没必要屡次读取同一个对象成员,发起第一次查询到值后就将其存储在局部变量中。
//bad
if(objecA.attr === 1 || objecA.attr === 2 || objecA.attr === 3){}
//good
const { attr } = objecA
if(attr === 1 || attr === 2 || attr === 3){}