js中if語句的幾種優(yōu)化代碼寫法
更新時(shí)間:2011年03月12日 19:15:16 作者:
UglifyJS是一個(gè)對(duì)javascript進(jìn)行壓縮和美化的工具,在它的文檔說明中,我看到了幾種關(guān)于if語句優(yōu)化的方法。
盡管我還沒使用它去做一些嘗試性的測(cè)試,但從這里可以看到它的確對(duì)js作了美化的工作。也許有人認(rèn)為if語句就那么簡(jiǎn)單,能優(yōu)化到什么程度?但是看看以下的幾種方式,你也許會(huì)改變看法。
一、使用常見的三元操作符
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ì)于以上使用三元操作符來優(yōu)化if語句你肯定不會(huì)陌生,或許你經(jīng)常使用它。
二、使用and(&&)和or(||)運(yùn)算符
if (foo) bar(); ==> foo&&bar();
if (!foo) bar(); ==> foo||bar();
老實(shí)說,我并沒有這樣去寫過代碼,這種寫法我在學(xué)習(xí)《鳥哥的 Linux 私房菜》時(shí)看到過,但我并沒想到在js中實(shí)現(xiàn)它。
三、省略大括號(hào){}
if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}
這種寫法你我都很熟悉,但我建議在代碼優(yōu)化的時(shí)候這樣做,或者交給UglifyJS幫你去解決。畢竟少一個(gè)大括號(hào),代碼的可閱讀性并不高。
寫到這里,我想到j(luò)Query之父在《精通 JavaScript》中的一個(gè)獲取HTML元素屬性的方法。
function getAttr(el, attrName){
var attr = {'for':'htmlFor', 'class':'className'}[attrName] || attrName;
};
如果我們不這樣寫,可能我們需借助于兩個(gè)if語句來進(jìn)行處理,而上面的代碼不僅簡(jiǎn)潔有效,而且可閱讀性強(qiáng)。
仔細(xì)想想,好些時(shí)候我們都能找到解決問題的有效途徑,但關(guā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ì)于以上使用三元操作符來優(yōu)化if語句你肯定不會(huì)陌生,或許你經(jīng)常使用它。
二、使用and(&&)和or(||)運(yùn)算符
復(fù)制代碼 代碼如下:
if (foo) bar(); ==> foo&&bar();
if (!foo) bar(); ==> foo||bar();
老實(shí)說,我并沒有這樣去寫過代碼,這種寫法我在學(xué)習(xí)《鳥哥的 Linux 私房菜》時(shí)看到過,但我并沒想到在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語句來進(jìn)行處理,而上面的代碼不僅簡(jiǎn)潔有效,而且可閱讀性強(qiáng)。
仔細(xì)想想,好些時(shí)候我們都能找到解決問題的有效途徑,但關(guān)鍵在于我們是否用心去尋找一種更好的途徑。
您可能感興趣的文章:
- javascript教程:關(guān)于if簡(jiǎn)寫語句優(yōu)化的方法
- nodejs的10個(gè)性能優(yōu)化技巧
- JavaScript性能優(yōu)化之小知識(shí)總結(jié)
- js性能優(yōu)化 如何更快速加載你的JavaScript頁面
- JavaScript也談內(nèi)存優(yōu)化
- JavaScript定時(shí)器和優(yōu)化的取消定時(shí)器方法
- JS對(duì)img標(biāo)簽進(jìn)行優(yōu)化使用onerror顯示默認(rèn)圖像
- Uglifyjs(JS代碼優(yōu)化工具)入門 安裝使用
- 深入探究JavaScript中for循環(huán)的效率問題及相關(guān)優(yōu)化
- js 優(yōu)化次數(shù)過多的循環(huán) 考慮到性能問題
- javascript for循環(huán)從入門到偏門(效率優(yōu)化+奇特用法)
- 整理AngularJS框架使用過程當(dāng)中的一些性能優(yōu)化要點(diǎn)
- javascript定時(shí)器取消定時(shí)器及優(yōu)化方法
- JavaScript中對(duì)循環(huán)語句的優(yōu)化技巧深入探討
- JS代碼優(yōu)化技巧之通俗版(減少js體積)
- angularjs的一些優(yōu)化小技巧
- Extjs優(yōu)化(二)Form表單提交通用實(shí)現(xiàn)
- JS代碼優(yōu)化的8點(diǎn)建議
- JavaScript If Else 語句
相關(guān)文章
簡(jiǎn)單聊聊JavaScript的事件循環(huán)機(jī)制
前端開發(fā)的童鞋應(yīng)該都知道,JavaScript是一門單線程的腳本語言,這就意味著JavaScript 代碼在執(zhí)行的時(shí)候,只有一個(gè)主線程來執(zhí)行所有的任務(wù),同一個(gè)時(shí)間只能做同一件事情,這篇文章主要給大家介紹了關(guān)于JavaScript事件循環(huán)機(jī)制的相關(guān)資料,需要的朋友可以參考下2022-03-03javascript使用遞歸算法求兩個(gè)數(shù)字組合功能示例
這篇文章主要介紹了javascript使用遞歸算法求兩個(gè)數(shù)字組合功能,結(jié)合實(shí)例形式分析了JS基于遞歸算法的數(shù)組遍歷、判斷、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下2017-01-01JavaScript可否多線程? 深入理解JavaScript定時(shí)機(jī)制
JavaScript的setTimeout與setInterval是兩個(gè)很容易欺騙別人感情的方法,因?yàn)槲覀冮_始常常以為調(diào)用了就會(huì)按既定的方式執(zhí)行, 我想不少人都深有同感2012-05-05解決JS內(nèi)存泄露之js對(duì)象和dom對(duì)象互相引用問題
這篇文章主要介紹了解決JS內(nèi)存泄露之js對(duì)象和dom對(duì)象互相引用問題,需要的朋友可以參考下2017-06-06微信小程序 獲取手機(jī)號(hào) JavaScript解密示例代碼詳解
這篇文章主要介紹了微信小程序 獲取手機(jī)號(hào) JavaScript解密的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05基于JavaScript實(shí)現(xiàn)百葉窗動(dòng)畫效果不只單純flas可以實(shí)現(xiàn)
看到這種百葉窗效果的動(dòng)畫,以為是用flash做的,下面通過本文給大家介紹基于JavaScript實(shí)現(xiàn)百葉窗動(dòng)畫效果,需要的朋友參考下吧2016-02-02微信小程序多文件上傳 Tdesign及導(dǎo)入失敗問題
小程序文件上傳還是有點(diǎn)麻煩的,其實(shí)主要還是小程序?qū)Φ慕涌谟兄T多的不便,比如說,文件不能批量提交,只能一個(gè)個(gè)的提交,小程序的上傳需要專門的接口,這篇文章主要介紹了微信小程序多文件上傳 Tdesign及導(dǎo)入失敗問題,需要的朋友可以參考下2023-11-11