《JavaScript 高級程式設計》閱讀筆記 1:最佳實踐

  • 2019 年 11 月 7 日
  • 筆記

可維護性

可維護性包括:可理解性、直觀性、可適應性、可擴展性和可調試性

程式碼約定:

  • 可讀性(縮進、注釋);
  • 變數和函數命名(有意義的命名);
  • 變數類型透明(var a =null var a = iSpeed

鬆散耦合:

  • HTML 或者 CSS 與 JavaScript 的解耦(如 CSS 仍然保留樣式資訊,通過改變類名來改變樣式);
  • 事件監聽器和應用邏輯的解耦(監聽器只發揮監聽作用,而將應用邏輯獨立成可以復用的函數)

編程實踐:

  • 尊重對象所有權(盡量不要改動原生對象);
  • 盡量避免創建全局變數和函數;
  • 避免與 null 比較
  • 使用常量

性能優化

  • 優先使用局部變數。根據作用域鏈查找的原理,訪問全局變數速度會較慢
  • 避免 with 語句。會延長作用域鏈長度
  • 避免多次的屬性查找。屬性查找涉及原型鏈的追溯,花費時間長
  • 優化循環:減值迭代、簡化終止條件、簡化循環體、使用 do...while...、展開循環
  • 使用數組字面量和對象字面量
  • 最小化現場更新。對於已經載入出來的 dom 的直接操作(現場更新)會影響性能,可以考慮在新建的 fragment 文檔片段中進行修改,之後只進行一次現場更新。
  • innnerHTML 比普通的創建 dom 節點的方法更快
  • 同胞節點有相同的事件時利用事件委託冒泡給父節點,父節點的事件監聽器里結合 switch 進行 event.target 判斷
  • 訪問 HTMLCollection 的屬性或者方法時,都是在文檔上進行查詢,這個過程會有性能開銷,應該最小化訪問 HTMLCollection 的次數。例如可以將 for 循環的終止條件判斷保存在一個值里,而不是每次都重新計算一次。