Source Code - JavaScript - 學習優雅的編碼

寧靜致遠。javascript


說明

  • 知識在不斷迭代,除了學習資料,那就是學習他人,來豐富本身。
  • 如下全是別人的源碼,會標明出處,很是感謝原做者,很是感謝開源。

優雅

mitt

// source code
  all = all || Object.create(null);
  • 短路運算符:詳情MDN
  • Object.create(null):生成的對象是一個原型爲空的對象。節約內存且避免衝突,由於沒有原型,且普通對象原型上的屬性和方法也相應沒有了。
// source code
  (all[type] || (all[type] = [])).push(handler);
// my code - bad
  if (all[type]) {
    all[type].push(handler)
  } else {
    all[type] = [handler]
  }
  • 簡潔的隊列賦值:短路邏輯判斷 + 初始化 + 更新數組,簡直不要太優雅。
// source code
  all[type].splice(all[type].indexOf(handler) >>> 0, 1);
  • 按位操做符:1 >>> 0 = 1, -1 >>> 0 = 4294967295, 詳情MDN
  • 補充:按位操做符'~',能夠結合.indexOf()使用,由於對任一數值 x 進行按位非操做的結果爲 -(x + 1),即:~-1 = 0
// source code
  (all[type] || []).slice().map((handler) => { handler(evt); });
  (all['*'] || []).slice().map((handler) => { handler(type, evt); });
  • Array.slice():slice不傳參數的時候,至關於淺複製一個數組,詳情MDN

axios

// source code
  彆着急

零散

// source code
  !!(0)             // false
  !!(null)          // false
  !!('')            // false
  !!(undefined)     // false
  !!(NaN)           // false
  
  !!(2)             // true
  • !!: 強制轉換成 boolean 類型,至關於 !(!val)。若是 val = 0/null/""/undefined/NaN 時,!!(val) = false,若是 val 是其餘值,!!(val) = true
  • !: 取反運算,返回的也是一個 boolean 類型。若是 val = 0/null/""/undefined/NaN 時,!(val) = false,若是 val 是其餘值,!(val) = true
// source code
  +'123456'        // 123456, Number
  +new Date()      // 1527684413484, 至關於 new Date().getTime()
  • +: +val 將字符串數字轉爲數字。若是 val 是非字符串數字,則 +val = NaN

好記性不如爛筆頭。java

相關文章
相關標籤/搜索