Java如何優化if語句嵌套
我們平時寫if,switch或for語句是常有的事兒,也一定寫過多層if或for語句嵌套的情況,如果代碼里的嵌套超過3層,閱讀起來就會非常困難了。
我們應該盡量避免代碼嵌套多層,最好不要超過2層。 if語句嵌套的問題 多層if語句嵌套是常有的事情,有什么好的方法可以減少嵌套呢? 1 盡早終止函數或返回數據 如果符合某個條件下可以直接終止函數,則應該將這個條件放在第一位。
我們來看看下面的例子。 if(condition1) { if(condition2){ if(condition3){ } else{ return; } } else{ return; } } else { return; } 這段代碼中if語句嵌套了3層,看起來已經很復雜了,我們可以將最后面的return提取到最前面去。
if(!condition1){ return; } if(!condition2){ return; } if(!condition3){ return; } 這段代碼中,我們把condition1等于false的語句提取到前面,直接終止函數,將多層嵌套的if語句重構成只有一層if語句,代碼也更清晰了。 。
js中if語句的幾種優化代碼寫法
一、使用常見的三元操作符復制代碼代碼如下:if (foo) bar(); else baz(); == foo?bar():baz();
if (!foo) bar(); else baz(); == foo?baz():bar();
if (foo) return bar(); else return baz(); == return foo?bar():baz();
對于以上使用三元操作符來優化if語句你肯定不會陌生,或許你經常使用它。
二、使用and(&&)和or(||)運算符復制代碼代碼如下:if (foo) bar(); == foo&&bar();
if (!foo) bar(); == foo||bar();
老實說,我并沒有這樣去寫過代碼,這種寫法我在學習《鳥哥的 Linux 私房菜》時看到過,但我并沒想到在js中實現它。
三、省略大括號{}復制代碼代碼如下:if (foo) return bar(); else something(); == {if(foo)return bar();something()}
這種寫法你我都很熟悉,但我建議在代碼優化的時候這樣做,或者交給UglifyJS幫你去解決。畢竟少一個大括號,代碼的可閱讀性并不高。
寫到這里,我想到jQuery之父在《精通 JavaScript》中的一個獲取HTML元素屬性的方法。
復制代碼代碼如下:function getAttr(el, attrName){
var attr = {'for':'htmlFor', 'class':'className'}[attrName] || attrName;};如果我們不這樣寫,可能我們需借助于兩個if語句來進行處理,而上面的代碼不僅簡潔有效,而且可閱讀性強。
仔細想想,好些時候我們都能找到解決問題的有效途徑,但關鍵在于我們是否用心去尋找一種更好的途徑。
幾種js中if語句使用優化實例
bar():baz(); if (!foo) bar(); else baz(); ==> foo?baz():bar(); if (foo) return bar(); else return baz(); ==> return foo?bar():baz(); 對于以上使用三元操作符來優化if語句你肯定不會陌生,或許你經常使用它。
二、使用and(&&)和or(||)運算符 if (foo) bar(); ==> foo&&bar(); if (!foo) bar(); ==> foo||bar(); 老實說,我并沒有這樣去寫過代碼,這種寫法看到過,但我并沒想到在js中實現它。 三、省略大括號{} if (foo) return bar(); else something(); ==> {if(foo)return bar();something()} 這種寫法你我都很熟悉,但我建議在代碼優化的時候這樣做,或者交給UglifyJS幫你去解決。
畢竟少一個大括號,代碼的可閱讀性并不高。 寫到這里,我想到一個獲取HTML元素屬性的方法。
function getAttr(el, attrName){ var attr = {'for':'htmlFor', 'class':'className'}[attrName] || attrName; }; 如果我們不這樣寫,可能我們需借助于兩個if語句來進行處理,而上面的代碼不僅簡潔有效,而且可閱讀性強。 仔細想想,好些時候我們都能找到解決問題的有效途徑,但關鍵在于我們是否用心去尋找一種更好的途徑。
一萬個if
我理解你的問題是嵌套的if else層次太深了,是吧?
如果是這樣,考慮用數組把條件存起來,排好序,用二分查找找到滿足的條件,然后根據函數指針調函數。每個分支做個函數。
也許好用。呵呵。1萬次判斷,比一次函數調用開銷還是要大很多的。可以實測一下效果如何。
如果if。。。else 。。。是并列不相關的,就沒轍了。
比如:
if{。。。}
else{。}
if{。}
else{。}
js中if語句的幾種優化代碼寫法
一、使用常見的三元操作符復制代碼代碼如下:if (foo) bar(); else baz(); == foo?bar():baz(); if (!foo) bar(); else baz(); == foo?baz():bar(); if (foo) return bar(); else return baz(); == return foo?bar():baz(); 對于以上使用三元操作符來優化if語句你肯定不會陌生,或許你經常使用它。
二、使用and(&&)和or(||)運算符復制代碼代碼如下:if (foo) bar(); == foo&&bar(); if (!foo) bar(); == foo||bar(); 老實說,我并沒有這樣去寫過代碼,這種寫法我在學習《鳥哥的 Linux 私房菜》時看到過,但我并沒想到在js中實現它。 三、省略大括號{}復制代碼代碼如下:if (foo) return bar(); else something(); == {if(foo)return bar();something()} 這種寫法你我都很熟悉,但我建議在代碼優化的時候這樣做,或者交給UglifyJS幫你去解決。
畢竟少一個大括號,代碼的可閱讀性并不高。 寫到這里,我想到jQuery之父在《精通 JavaScript》中的一個獲取HTML元素屬性的方法。
復制代碼代碼如下:function getAttr(el, attrName){ var attr = {'for':'htmlFor', 'class':'className'}[attrName] || attrName;};如果我們不這樣寫,可能我們需借助于兩個if語句來進行處理,而上面的代碼不僅簡潔有效,而且可閱讀性強。 仔細想想,好些時候我們都能找到解決問題的有效途徑,但關鍵在于我們是否用心去尋找一種更好的途徑。
jq代碼優化,如何優化大量的if elseif語句
var mytop = $(window).scrollTop();$('#wrap>h3').each(function(i) { var $this = $(this); var $next = $*('h3'); var top = $*().top; var bottom = $next[0] ? $*().top: $('#wrap>h3:last').offset().top; var $li = $("#fixed ul li").eq(i); if (mytop >= top && mytop < bottom) { $*ss("cur").siblings().removeClass("cur"); return true; }});樓主的CSS有問題,這個改成這樣就好了 #wrap img { display: block; border: none;}你float的話會影響流的布局,計算不到高度 順便說一下,用if是肯定不可取的,假如我有100個節點,難道要if 100次嗎?很明顯用遍歷才合適。