我有一个用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
情况下处理案例,否则无需不断检查对象的当前类型或其值。