Мне нравятся другие мнения о том, что более эффективно в этом коде. В основном в следующем коде есть цикл setInterval, и мне нужно, чтобы 4 требования были истинными до того, как код запустится в цикле. Поэтому в v.1 я написал оператор if, проверяющий все 4. Работал нормально.
Затем я переключился на использование try/catch, с кодом, который я хочу выполнить, сидя в try {}. Логика заключалась в том, что во время каждого цикла генерируется исключение, но подавляется для каждого недопустимого условия. В последнем цикле, где все условия верны, код выполняет и очищает интервал.
Либо работает. Мне нравится метод try/catch, потому что там меньше условного кода, который мне нужно написать и беспокоиться о нарушении. Но я волнуюсь, что попытка/улов действительно неэффективна, особенно в цикле setInterval(), достигающем 100 мс. Каковы некоторые мнения о других ярких умах здесь, на SO?
Try/Поймать
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);