这个javascript语句会影响性能吗?
我正在编写一个函数add_事件,如下所示:这个javascript语句会影响性能吗?,javascript,performance,variable-assignment,Javascript,Performance,Variable Assignment,我正在编写一个函数add_事件,如下所示: 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){
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,这就是我问这个问题的原因。非常感谢。js解释器可能会对其进行优化。即使没有,效果也不会明显。如果您真的担心,请将其更改为:
if(typeof o === "string")
o = document.getElementById(o);
js解释器很可能会对其进行优化。即使没有,效果也不会明显。如果您真的担心,请将其更改为:
if(typeof o === "string")
o = document.getElementById(o);
不会。大多数javascript解释器的性能不会因此受到影响。那些这样做的人最多会受到几微秒的影响 在这种情况下,您应该专注于使代码可读性和可维护性。试图从非常简单的操作中挤出性能只会浪费时间,并可能使代码更难维护 如果您觉得javascript代码的性能很差,那么可以使用各种工具和策略来查找和修复问题。以下堆栈溢出问题与此主题有关:
祝你好运 否。大多数javascript解释器的性能不会因此受到影响。那些这样做的人最多会受到几微秒的影响 在这种情况下,您应该专注于使代码可读性和可维护性。试图从非常简单的操作中挤出性能只会浪费时间,并可能使代码更难维护 如果您觉得javascript代码的性能很差,那么可以使用各种工具和策略来查找和修复问题。以下堆栈溢出问题与此主题有关:
祝你好运 字符串绝对不是
string
(不是string
!)的实例typeof
是正确的选择。字符串绝对不是string
的实例(而不是string
!)typeof
是正确的选择。