我有一个用javascript编写的计时器对象,我的目标是使其尽可能高效,快速,准确。
我关注的一个问题与通常适用于所有编码方式的特定案例有关,我确信之前已被问过,我只是不确定在搜索时使用哪些条款。
我的问题是这两种情况中哪一种更快/更有效?
案例1:在重复的代码段中为变量赋值,即使您知道该值只需要分配一次。
案例2:检查变量的值,从而有条件地分配变量。
function runOnce(){
timer.someValue = { //some object...};
}
function someRepeatedFunction(){
timer.someValue = null;
//vs
if(timer.someValue){
timer.someValue = null;
}
}
哪一种情况会更快?
答案 0 :(得分:0)
微优化#1
如果您坚持进行条件检查,我会绕过使用==
运算符(我认为Javascript会自动使用)并转到===
运算符。
标识===
运算符与相等==
运算符的行为相同,但不进行类型转换,并且类型必须相同才能被视为相等。==
运算符将进行比较在进行任何必要的类型转换后获得相等。 ===
运算符不会执行转换,因此如果两个值不相同,则===
将返回false。在这种情况下,===
会更快,并且可能会返回与==
不同的结果。在所有其他情况下,表现将是相同的。
微优化#2
关于作业与作品之间的选择。在条件检查中,在使用全局变量(如您似乎正在使用的变量)的情况下进行赋值似乎是合乎逻辑的。除非您计划在else
情况下处理案例,否则无需不断检查对象的当前类型或其值。