2010-03-10 129 views
1

我正在寫一個函數add_event如下面所示:此javascript語句是否影響性能?

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,這就是我問這個問題的原因。萬分感謝。

回答

3

很可能js解釋器會優化它。即使沒有,效果也不會很明顯。如果您真的擔心,請將其更改爲:

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

一個字符串並不一定是'String'的實例(不是'string'!)。 「typeof」是正確的選擇。 – Gumbo 2010-03-10 09:10:20

+0

@Gumbo變了。 – Amarghosh 2010-03-10 09:22:38

2

否。大多數JavaScript解釋器不會受其影響。那些做的最多隻會影響幾微秒。

在這種情況下,您應該重點關注如何讓您的代碼具有可讀性和可維護性。試圖通過非常簡單的操作來壓縮性能只會浪費時間,並且可能會讓代碼難以維護。

如果您覺得您的JavaScript代碼表現不佳,可以使用各種工具和策略來查找和解決問題。以下堆棧溢出問題有更多的話題:What is the best way to profile javascript execution?

祝你好運!