lodash源碼閱讀-add.js

add.js

// add.js
const add = createMathOperation((augend, addend) => augend + addend, 0) // 返回一個add函數
export default add

// createMathOperation.js
function createMathOperation(operator, defaultValue) { // operator是傳入的函數參數,即上面的箭頭函數(augend, addend) => augend + addend
  return (value, other) => { // 返回值是一個函數,接收兩個參數
    if (value === undefined && other === undefined) {
      return defaultValue
    }
    if (value !== undefined && other === undefined) {
      return value
    }
    if (other !== undefined && value === undefined) {
      return other
    }
    if (typeof value === 'string' || typeof other === 'string') { // 若是兩個參數中有一個是字符串類型,則統一轉成字符串類型,而後進行操做
      value = baseToString(value)
      other = baseToString(other)
    }
    else { // 不然,都轉成數字類型
      value = baseToNumber(value)
      other = baseToNumber(other)
    }
    return operator(value, other) // 返回operator函數的結果
  }
}
複製代碼
相關文章
相關標籤/搜索