JavaScript 赋值与条件检查中的代码效率和速度比较



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

的担忧之一与通常可以应用于所有编码方式的特定情况有关,我敢肯定之前有人问过,我只是不确定在搜索它时使用什么术语。

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

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

情况 2:检查变量的值,从而有条件地分配它。

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

function someRepeatedFunction(){
    timer.someValue = null;
    //vs
    if(timer.someValue){
        timer.someValue = null;
    }
}

哪种情况会更快?

微优化 #1

如果你坚持条件检查,我会绕过使用==运算符(我认为Javascript会自动使用(,而选择===运算符。

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

微优化 #2

关于赋值

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

最新更新