JS有4中数据存取方式:字面变量、局部变量、数组项、对象成员。字面变量和局部变量访问速度快,数组项和对象成员访问要慢一些。
数据访问时会沿着作用域链进行查找,局部变量要比全局变量快得多,嵌套的对象成员和对象的子属性、子方法,如果层级越深,访问就越慢。
改善数据访问效率的方法是用局部变量存嵌套对象、数组项、跨域变量,这样通过局部变量就可以访问,节省了查找层级。
例如:
function hasEitherClass(element , class1, class2 ){
return element.className==class1 || element.className==class2;
}
改为:
function hasEitherClass(element , class1, class2 ){
var currentClassName=element.className;
return currentClassName==class1 || currentClassName==class2;
}
就可以将对属性className的访问次数由2次对象查找变为1次对象查找和1次局部变量访问,效率会高一些