你的 JavaScript 代碼吝嗇嗎

來源:互聯網
上載者:User

前端開發,要學會吝嗇:

  1. 吝嗇你的代碼,用最少的代碼做最合適的事情;
  2. 比如你的代碼中用到了很多document.getElementById(),你是否考慮寫一個簡單的ID選取器。

    function $(Id){    return document.getElementById(Id);}
  3. 吝嗇你的補丁,不要為了實現功能在現有架構上打補丁,而是架構擴充上寫實現,如果架構不能擴充,是否考慮部分重構?
  4. 比如你已經擁有一套完整的表單正則驗證架構,某天你發現某個表單在嚴重架構裡找不到對應的正則,你可能的做法是追加一個if就能簡單的實現,可為何不在驗證架構裡面擴充一個正則,保持代碼的乾淨呢?

  5. 吝嗇代碼執行的步驟
  6. 比如我們在寫ajax代碼時,我們經常寫如下的代碼:

    var xmlObject;function createXMLHTTPRequest(){if(window.ActiveXObject){   xmlObject = new ActiveObject("Microsoft.XMLHTTP"); }else{   xmlObject = new XMLHTTPRequest();     }}

    但我們每產生一次對象就要進行一次判斷,為何不在第一次產生對象後記憶下來,下次直接new呢?改進後如下:

    var _ajax = function(){    _self = this;}_ajax.prototype = {    /**     * 構建http請求對象     */    _create: function(){        var factories = [function(){return new XMLHttpRequest();},//非IE系列function(){return new ActiveXObject("Microsoft.XMLHTTP");},//IEfunction(){return new ActiveXObject("Msxml2.XMLHTTP");}//IE某些版本];        for (var i = 0; i < factories.length; i++)             {            try                 {                if (factories[i]())                 {                    return factories[i];                }            }             catch (e) {                continue;            }        }        return factory[2];    }(),}

這段代碼看起來視乎比上面執行步驟多很多,但當第一次調用_ajax._create()後,_ajax._create已經被改變成一個相容當前瀏覽器的匿名函數,以後的調用都不再會做判斷。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.