国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript教程:關于if簡寫語句優化的方法

2024-05-06 16:06:12
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了js中if簡寫語句優化的方法,需要的朋友可以參考下

UglifyJS是一個對javascript進行壓縮和美化的工具,在它的文檔說明中,我看到了幾種關于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語句你肯定不會陌生,或許你經常使用它。

腳本之家給出的例子:

復制代碼 代碼如下:


<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中實現它。

三、省略大括號{}

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語句來進行處理,而上面的代碼不僅簡潔有效,而且可閱讀性強。

仔細想想,好些時候我們都能找到解決問題的有效途徑,但關鍵在于我們是否用心去尋找一種更好的途徑。

【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,會執行第二個條件檢測

    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></div>').appendTo($(this).parent());
        }
    );  
</script>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 绥滨县| 东安县| 西盟| 东阿县| 绩溪县| 河源市| 开鲁县| 滦南县| 黎川县| 广汉市| 错那县| 兰州市| 江北区| 景德镇市| 沙坪坝区| 惠安县| 福州市| 永康市| 灌云县| 高雄市| 定兴县| 谢通门县| 西昌市| 静安区| 侯马市| 宾川县| 大石桥市| 柳州市| 驻马店市| 威海市| 襄樊市| 东港市| 许昌市| 石屏县| 江北区| 盖州市| 武鸣县| 墨竹工卡县| 平罗县| 邯郸市| 临城县|