首页 » 小蓝 » V8引擎几个常见无法优化的点

V8引擎几个常见无法优化的点

1. try-catch(-final)

但凡在函数中有try-catch语句的,会导致整个函数无法优化。

所以,应该把try-catch语句封装到一个独立的函数里。

//不能优化
function(){
    /**
    **一些业务
    **/
    try{
        //do sth
    }catch(ex){
        //handle
    }
}

//能被优化
var foo = function(){
    try{
        //do sth
    }catch(ex){
        //handle
    }
}
function(){
    /**
    **一些业务
    **/

    foo();

}

2. with语句

with语句可以少写很多对象名,但是不值得,因为它也会导致整个函数无法优化

function(){
    with(object1){
        name = 'tom';
    }
    /**
    * 应该写成
    * object1.name = 'tom';
    */
}

3. For-In

for-in 并不是不能优化,只是有比它效率更高的便利对象方式

var keys = Object.keys(object1);
for (var i = 0; i < keys.length; i++) {
    //do sth with object1[i]
    //这种方式会优化得很好
}

4. Yield

这个我不太了解就不说了,作为这么重要的东西,V8后续版本应该会给它做优化的吧