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

标签 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,这就是我问这个问题的原因。非常感谢。

最佳答案

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

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

关于javascript - 这个javascript语句会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2415540/

相关文章:

perl - 在 Perl 中分配和测试定义时理解优先级

javascript - 我想从闭包外部更改变量 'inner' 的值,但我的输出似乎未定义

c - Lua - 重置脚本状态而不修复它

mysql - 使用 MySQL 时 SUB QUERY、LIMIT 和 ORDER BY 的性能注意事项

sql - Postgres 查询调优

c - 无法在 C 函数中返回 'true' 值

bash - 我的变量赋值有什么问题?

javascript - 使用 Passport 在 Express 的 POST 中传递参数

javascript - 在 Javascript 中,有没有办法将对象数组转换为函数调用的参数?

javascript - 使用 JavaScript 将 HTML 字符串加载到 iframe