javascript教程:關于if簡寫語句優(yōu)化的方法
UglifyJS是一個對javascript進行壓縮和美化的工具,在它的文檔說明中,我看到了幾種關于if語句優(yōu)化的方法。盡管我還沒使用它去做一些嘗試性的測試,但從這里可以看到它的確對js作了美化的工作。也許有人認為if語句就那么簡單,能優(yōu)化到什么程度?但是看看以下的幾種方式,你也許會改變看法。
一、使用常見的三元操作符
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();
對于以上使用三元操作符來優(yōu)化if語句你肯定不會陌生,或許你經常使用它。
腳本之家給出的例子:
<script>
var i=9
var ii=(i>8)?100:9;
alert(ii);
</script>
輸出結果:
100
二、使用and(&&)和or(||)運算符
if (foo) bar(); ==> foo&&bar();
if (!foo) bar(); ==> foo||bar();
老實說,我并沒有這樣去寫過代碼,這種寫法我在學習《鳥哥的 Linux 私房菜》時看到過,但我并沒想到在js中實現(xiàn)它。
三、省略大括號{}
if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}
這種寫法你我都很熟悉,但我建議在代碼優(yōu)化的時候這樣做,或者交給UglifyJS幫你去解決。畢竟少一個大括號,代碼的可閱讀性并不高。
寫到這里,我想到jQuery之父在《精通 JavaScript》中的一個獲取HTML元素屬性的方法。
function getAttr(el, attrName){
var attr = {'for':'htmlFor', 'class':'className'}[attrName] || attrName;
};
如果我們不這樣寫,可能我們需借助于兩個if語句來進行處理,而上面的代碼不僅簡潔有效,而且可閱讀性強。
仔細想想,好些時候我們都能找到解決問題的有效途徑,但關鍵在于我們是否用心去尋找一種更好的途徑。
【javascript技巧】if(x==null)簡寫
if(x==null)或if (typeof (x) == 'undefined')可以簡寫為if(!x),未驗證。
反之if(x)表示x非空
判斷對象是否存在
if(document.form1.softurl9){
//判斷是否存在softurl9,防止js出錯
}
if(document.getElementById("softurl9")){
//判斷是否存在softurl9,防止js出錯
}
補充:
javascript || && 簡寫 if
<script type="text/javascript">
如果你想寫
if (!false)
{
alert('false');
}
不妨考慮寫成:
false || alert('false');
false || alert('false'); true || alert('true'); //output false;
用"||"的情況下,第一個條件true,不檢測第二個直接返回true.第一個條件false,會執(zhí)行第二個條件檢測
false && alert('false'); true && alert('true'); //output true
用"&&"的情況下,第一個條件true,還會檢測第二個條件。第一個條件false,直接返回false退出。
簡而言之, 替換 if 的簡單實用, ? : 替換 if else的實用。 寫短小精悍的代碼
usage:
$("#regform input[type!=hidden]").each(
function(index) {
$(this).parent().has("div.valid-under").length || $('<div class="valid-under"></div>').appendTo($(this).parent());
}
);
</script>
相關文章
js 頁面?zhèn)鲄?shù)時 參數(shù)值含特殊字符的問題
解決方法就是利用js的escape函數(shù),這個函數(shù)在解決中文亂碼等方面應用的比較廣泛。推薦使用。2009-12-12前端項目npm?install?安裝依賴報錯的解決方案(三種問題解決方案)
本文給大家介紹前端項目npm?install?安裝依賴報錯的解決方案(三種問題解決方案),給大家總結了前端項目安裝依賴,遇到過的問題,每一種問題給大家完美解決方案,感興趣的朋友一起看看吧2023-12-12javascript自執(zhí)行函數(shù)之偽命名空間封裝法
比較之后,我們可以發(fā)現(xiàn),第二方法更加的直觀,易于理解。但是少了封裝過程,代碼完全裸露在外。2010-12-12