这个javascript语句会影响性能吗?

时间:2010-03-10 08:57:05

标签: javascript performance variable-assignment

我正在编写一个函数add_event,如下所示:

function add_event(o, event_type, callback, capture){
    o = typeof o === "string" ? document.getElementById(o) : o;
    if(document.addEventListener){
        add_event = function(o, event_type, callback, capture){
            o = typeof o === "string" ? document.getElementById(o) : o;
            o.addEventListener(event_type, callback, capture);
        }
    }else if(document.attachEvent){
        add_event = function(o, event_type, callback, capture){
            o = typeof o === "string" ? document.getElementById(o) : o;
            o.attachEvent("on" + event_type, callback);
        }
    }
    add_event(o, event_type, callback, capture);
}

现在我的问题是声明是否

o = typeof o === "string" ? document.getElementById(o) : o;

会影响这个程序的性能吗?如果你传递一个HTML元素而不是一个id,你就会执行语句 o = o ,这就是我问这个问题的原因。非常感谢。

2 个答案:

答案 0 :(得分:3)

有可能js解释器会优化它。即使没有,效果也不会明显。如果您真的担心,请将其更改为:

if(typeof o === "string")
  o = document.getElementById(o);

答案 1 :(得分:2)

没有。大多数javascript解释器都不会受此影响。那些做到的人最多会受到几微秒的影响。

在这种情况下,您应该专注于使代码可读和可维护。试图从非常简单的操作中挤出性能只会浪费时间,并可能使代码更难维护。

如果您认为自己的javascript代码效果不佳,可以使用各种工具和策略来查找和修复问题。以下堆栈溢出问题有关于该主题的更多信息:What is the best way to profile javascript execution?

祝你好运!