一、使用常見(jiàn)的三元操作符
復(fù)制代碼 代碼如下:
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();
對(duì)于以上使用三元操作符來(lái)優(yōu)化if語(yǔ)句你肯定不會(huì)陌生,或許你經(jīng)常使用它。
二、使用and(&&)和or(||)運(yùn)算符 復(fù)制代碼 代碼如下:
if (foo) bar(); ==> foo&&bar();
if (!foo) bar(); ==> foo||bar();
老實(shí)說(shuō),我并沒(méi)有這樣去寫過(guò)代碼,這種寫法我在學(xué)習(xí)《鳥哥的 Linux 私房菜》時(shí)看到過(guò),但我并沒(méi)想到在js中實(shí)現(xiàn)它。
三、省略大括號(hào){}
復(fù)制代碼 代碼如下:
if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}
這種寫法你我都很熟悉,但我建議在代碼優(yōu)化的時(shí)候這樣做,或者交給UglifyJS幫你去解決。畢竟少一個(gè)大括號(hào),代碼的可閱讀性并不高。
寫到這里,我想到j(luò)Query之父在《精通 JavaScript》中的一個(gè)獲取HTML元素屬性的方法。
復(fù)制代碼 代碼如下:
function getAttr(el, attrName){
var attr = {'for':'htmlFor', 'class':'className'}[attrName] || attrName;
};
如果我們不這樣寫,可能我們需借助于兩個(gè)if語(yǔ)句來(lái)進(jìn)行處理,而上面的代碼不僅簡(jiǎn)潔有效,而且可閱讀性強(qiáng)。
仔細(xì)想想,好些時(shí)候我們都能找到解決問(wèn)題的有效途徑,但關(guān)鍵在于我們是否用心去尋找一種更好的途徑。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。