最近在看JavaScript高級程序設計,看到可維護代碼的編寫,作一下筆記與總結,方便之後查看。css
boolean
用 is
開頭類型透明也就是在變量定義的時候能夠知道變量的類型
主要有如下三種方式:算法
初始化變量瀏覽器
var found = false; // boolean var count = -1; // number
缺點:不能使用在函數聲明中的函數參數(如今經過ES6中的函數參數初始化解決)編輯器
使用匈牙利標記法 o
表示對象,s
表示字符串...函數
var bFound; // boolean var iCount; // int
缺點:代碼難以閱讀prototype
使用類型註釋 類型註釋放到變量名右邊,初始化前面設計
var found /*:Boolean*/ = false; var count /*:int*/ = -1;
缺點:不能使用js
多行註釋code
經過動態修改樣式類,而不是修改特定樣式對象
// 不建議寫法 element.style.color = 'red'; element.style.backgroundColor = 'blue'; // 建議寫法 // css .dit{ color: red; background-color: blue; } // js element.className = 'edit';
有如下幾條原則:事件
任何事件處理程序都應該處理事件,而後將處理轉交給應用邏輯
// 不建議寫法 function handleKeyPress(event){ if(event.keyCode === 13){ var target = event.target; var value = 5 * parseInt(target.value); if(value > 10){ document.getElementById('id').style.display = 'block'; } } } // 建議寫法 // 好處:若是我點擊鼠標也執行相同邏輯,那麼直接調用validateValue就能夠了 // 應用邏輯 function validateValue(value){ value = 5 * parseInt(value); if(value > 10){ document.getElementById('id').style.display = 'block'; } } // 事件處理程序 function handleKeyPress(event){ if(event.keyCode === 13){ var target = event.target; validateValue(target.value); } }
簡單點說就是否是你本身的建立或者維護的某個對象,他的對象和方法,不能修改
具體說:
最多建立一個全局變量,其餘對象或函數保存在其中,其中有個概念叫作命名空間
命名空間就是指用來放置頁面功能的對象
// 命名空間 let YAHOO = {}; YAHOO.util.Dom YAHOO.util.Event ....
判斷一個是否爲null
若是直接比較是使用過分的,而且因爲比較不充分可能致使錯誤,
因此在判斷一個值的類型的時候要與指望的類型進行比較,而非不被指望的那些
// value 指望一個Array if(value !== null){ // do something.... } // 建議 if(value instanceof Array){ // do something.... }
下面列舉一下判斷數據類型的方法
typeof
instanceof
typeof
undefined
,使用typeof
,不要直接===
判斷,若是函數沒有聲明,那麼會報錯Object.prototype.toString.call
let ts = Object.prototype.toString; ts.call([]) === '[Object Array]'; // true ts.call(123) === '[Object Number]'; // true ts.call({}) === '[Object Object]'; // true ....
使用常量能夠避免魔術字符串,也能夠幫助構建國際化
建議使用常量的幾種狀況: