2010-03-10 4 views
1

J'écris une add_event fonction comme le montre ci-dessous:Est-ce que cette déclaration javascript affecte les performances?

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); 
} 

Maintenant, ma question est de savoir si la déclaration

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

affecte les performances de ce programme? Si vous passez un élément HTML au lieu d'un ID, vous exécutez en fait l'instruction o = o, c'est la raison pour laquelle je pose cette question. Grand merci.

Répondre

3

Il est probable que l'interpréteur js l'optimisera. Même si ce n'est pas le cas, l'effet ne sera pas perceptible. Et si vous êtes vraiment inquiet, changer pour:

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

Une chaîne n'est pas du tout une instance de 'String' (pas' string'!). 'typeof' est la bonne façon de faire. – Gumbo

+0

@Gumbo changé. – Amarghosh

2

No. interprètes La plupart javascript n'ont leur performance affectée. Ceux qui le font l'auront affecté de quelques microsecondes tout au plus.

Dans ce cas, vous devriez vous concentrer sur la lisibilité et la maintenance de votre code. Essayer de réduire les performances à partir d'opérations très simples ne fera que perdre du temps et rendre votre code plus difficile à maintenir.

Si vous pensez que votre code javascript fonctionne mal, vous pouvez utiliser une variété d'outils et de stratégies pour trouver et résoudre le problème. La question de débordement de pile suivante a plus sur le sujet: What is the best way to profile javascript execution?

Bonne chance!

Questions connexes