javascript -assignment与条件检查中的代码效率和速度比较

时间:2014-12-07 16:51:44

标签: javascript performance

我有一个用javascript编写的计时器对象,我的目标是使其尽可能高效,快速,准确。

我关注的一个问题与通常适用于所有编码方式的特定案例有关,我确信之前已被问过,我只是不确定在搜索时使用哪些条款。

我的问题是这两种情况中哪一种更快/更有效?

案例1:在重复的代码段中为变量赋值,即使您知道该值只需要分配一次。

案例2:检查变量的值,从而有条件地分配变量。

function runOnce(){
    timer.someValue = { //some object...};
}


function someRepeatedFunction(){
    timer.someValue = null;

    //vs

    if(timer.someValue){
        timer.someValue = null;
    }
}

哪一种情况会更快?

1 个答案:

答案 0 :(得分:0)

微优化#1

如果您坚持进行条件检查,我会绕过使用==运算符(我认为Javascript会自动使用)并转到===运算符。

标识===运算符与相等==运算符的行为相同,但不进行类型转换,并且类型必须相同才能被视为相等。==运算符将进行比较在进行任何必要的类型转换后获得相等。 ===运算符不会执行转换,因此如果两个值不相同,则===将返回false。在这种情况下,===会更快,并且可能会返回与==不同的结果。在所有其他情况下,表现将是相同的。

微优化#2

关于作业与作品之间的选择。在条件检查中,在使用全局变量(如您似乎正在使用的变量)的情况下进行赋值似乎是合乎逻辑的。除非您计划在else情况下处理案例,否则无需不断检查对象的当前类型或其值。