イベント登録なんかの場合を例としてみると、、
[before]
var addEvent = function(element, type, func) { if(window.addEventListener) { element.addEventListener(type, func, false); } else { element.attachEvent('on' + type, func); } }
[after]
var addEvent = (window.addEventListener ? function(element, type, func) { element.addEventListener(type, func, false); } : function(element, type, func) { element.attachEvent('on' + type, func); });
関数定義の時点で、判定してしまって、その後は判定されないようにします。
三項演算子を使うことによって、すっきりするような気がします。
あとは、ブラウザの判定処理なんかとかも、一度しか行われないように、変数として持ってしまうとか。
var Util = { isIE: (/MSIE/.test(navigator.userAgent) && !window.opera), addEvent: (window.addEventListener ? function(element, type, func) { element.addEventListener(type, func, false); } : function(element, type, func) { element.attachEvent('on' + type, func); }) }; if (!Util.isIE) { console.log('IEではありません'); }