iT邦幫忙

2021 iThome 鐵人賽

0
自我挑戰組

追憶JS年華系列 第 28

Day-28 特集:例外處理與FP

本篇介紹兩種錯誤檢測函式。

Error Handling例外處理

例外處理 (error handling) 是 JavaScript 的一種程式流程控制,你可以在程式執行可能拋出錯誤的地方使用,主動捕捉並處理錯誤,避免整個程式因為發生錯誤而停止執行。

  • Eg 若分母為0,給出infinity。
  • 若try的內容錯誤,catch就會作用。
try {
   // 預期可能會發生錯誤的程式碼
} catch {
   // try 區塊有拋出錯誤時,則執行這裡的程式碼
} finally {
   // 不論成敗都要做
   // 關閉資源
}

預期console.log (err)會印出錯誤訊息。

Functional Programming (FP)

函式語言程式設計(Functional Programming, FP)是一種程式撰寫風格,我們同樣能用於條件檢測。

設定檢測條件如下

  • 密碼至少要 8 個字
  • 密碼裡至少要有 1 個數字以及 1 個大寫英文字母
  • 密碼裡不能有 “password” 字樣
    • 用正規表達式的話:
      • 第一行也能寫成 => /.{8,}/.test(pw)
      • 第二行也能寫成 => /password/.test(pw)
      • 第三行也能寫成 => /[A-Z]/.test(pw)
      • 第四行也能寫成 => /\d/.test(pw)
const moreThanChars = (pw, n) => pw.lenth >= n //pw大於等於引數n
const containPassword = (pw) => pw.include("password") //pw內包括password
const containUppercase = (pw) => pw.toLowerCase() != pw //若pw轉為小寫後與原pw不同,代表有大寫
const containNumber = (pw) => pw.split('').some( (c) => !isNaN(c)) //分拆文字pw,檢查各字元c有無數字

const isValidPassword = (pasword) =>{
    password = password.trim() //過濾空白

    return moreThanChars (password, 8) //把值帶入
    && containNumber(password) //把值帶入
    && containUppercase(password) //把值帶入
    && !containPassword(password) //把值帶入
}
    
console.log(isValidPassword("12345"));           // false
console.log(isValidPassword("123passwordxyz"));  // false
console.log(isValidPassword("helloworld"));      // false
console.log(isValidPassword("Helloworld"));      // false
console.log(isValidPassword("helloWorld2"));     // true

上一篇
Day-27 特集:測試驅動開發 TDD 
下一篇
Day-29 特集:解構 destructing
系列文
追憶JS年華30

尚未有邦友留言

立即登入留言