我喜欢关于这段代码更有效的一些其他意见。基本上在下面的代码中,有一个 setInterval 循环,在代码在循环中运行之前,我需要满足 4 个要求。所以在 v.1 中我写了一个 if 语句检查所有 4。工作正常。
然后我切换到只使用 try/catch,而我想要执行的代码位于 try{} 中。逻辑是在每个循环期间,都会生成一个异常,但会为每个无效条件抑制。在所有条件都为真的最后一个循环中,代码执行并清除间隔。
要么工作。我喜欢 try/catch 方法,因为我需要编写的条件代码更少并且担心会破坏。但我担心 try/catch 效率很低,尤其是在 setInterval() 循环达到 100 毫秒时。其他聪明人对 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);
中频块
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);