我正在编写一个函数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 ,这就是我问这个问题的原因。非常感谢。
答案 0 :(得分:3)
有可能js解释器会优化它。即使没有,效果也不会明显。如果您真的担心,请将其更改为:
if(typeof o === "string")
o = document.getElementById(o);
答案 1 :(得分:2)
没有。大多数javascript解释器都不会受此影响。那些做到的人最多会受到几微秒的影响。
在这种情况下,您应该专注于使代码可读和可维护。试图从非常简单的操作中挤出性能只会浪费时间,并可能使代码更难维护。
如果您认为自己的javascript代码效果不佳,可以使用各种工具和策略来查找和修复问题。以下堆栈溢出问题有关于该主题的更多信息:What is the best way to profile javascript execution?
祝你好运!