このコードでより効率的なものについて、他の意見が欲しいです。基本的に、次のコードには setInterval ループがあり、コードがループ内で実行される前に 4 つの要件を満たす必要があります。したがって、v.1 では、4 つすべてをチェックする if ステートメントを書きました。うまくいきました。
次に、実行したいコードを try{} に置いて、try/catch のみを使用するように切り替えました。ロジックは、各ループ中に例外が生成されますが、無効な条件ごとに抑制されます。すべての条件が真である最後のループで、コードが実行され、間隔がクリアされます。
どちらでも動作します。私が try/catch メソッドを気に入っているのは、書く必要があり、壊れることを心配する必要のある条件付きコードが少ないからです。しかし、特に setInterval() ループが 100 ミリ秒に達した場合に、try/catch が本当に非効率的ではないかと心配しています。SOに関する他の明るい人の意見は何ですか?
トライ/キャッチ
var intvar = setInterval(function(){
try{
clearInterval(intvar);
jQuery('#'+nav[pageid].t1+'>a').replaceWith(jQuery('<span>'+jQuery('#'+nav[pageid].t1+'>a').text()+'</span>'));
//set display classes for nav
jQuery('#'+nav[pageid].t1).addClass('selected').find('#'+nav[pageid].t2).addClass('subselect'); //topnav
jQuery('#'+nav[pageid].t3).addClass('selected').find('#'+nav[pageid].t4).addClass('subselect'); //leftnav
}catch(err){}
},100);
IF ブロック
var intvar = setInterval(function(){
if(typeof jQuery == 'function' && typeof nav == 'object' && typeof pageid != 'undefined' && typeof document.getElementById('leftnav') == 'object'){
clearInterval(intvar);
jQuery('#'+nav[pageid].t1+'>a').replaceWith(jQuery('<span>'+jQuery('#'+nav[pageid].t1+'>a').text()+'</span>'));
//set display classes for nav
jQuery('#'+nav[pageid].t1).addClass('selected').find('#'+nav[pageid].t2).addClass('subselect'); //topnav
jQuery('#'+nav[pageid].t3).addClass('selected').find('#'+nav[pageid].t4).addClass('subselect'); //leftnav
}
},100);