国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

徹底解決if else嵌套問題

zhoutk / 654人閱讀

摘要:徹底解決嵌套問題開發(fā)過程中常因為過多導(dǎo)致代碼融于,難以閱讀,今天就我們就一起來解決這個問題,讓代碼更優(yōu)美,維護更方便,接盤俠更開心有函數(shù)根據(jù)傳入水果類型返回顏色,代碼如下寫法一寫法二把同類放到一個中數(shù)組篩選內(nèi)多條件處理更早丟出不符合條件的資

徹底解決if else嵌套問題

開發(fā)過程中常因為if else過多導(dǎo)致代碼融于,難以閱讀,今天就我們就一起來解決這個問題,讓代碼更優(yōu)美,維護更方便,接盤俠更開心

有函數(shù)根據(jù)傳入水果類型返回顏色,代碼如下:

寫法一

function test(fruit) {
  if (fruit == "apple" || fruit == "strawberry") {
    console.log("red");
  }
}

寫法二

function test(fruit) {
  // 把同類放到一個中數(shù)組
  const redFruits = ["apple", "strawberry", "cherry", "cranberries"];

  if (redFruits.includes(fruit)) {
    console.log("red");
  }
}
篩選內(nèi)多條件處理

更早丟出不符合條件的資源

復(fù)合特定條件的放在最后處理

function test(fruit, quantity) {
  const redFruits = ["apple", "strawberry", "cherry", "cranberries"];
  // 提前丟出不符合條件
  if (!fruit) throw new Error("No fruit!"); 
  if (!redFruits.includes(fruit)) return; 

  console.log("red");

  // 復(fù)合條件放到最后
  if (quantity > 10) {
    console.log("big quantity");
  }
}
處理傳入?yún)?shù)是object的情況

使用解構(gòu)賦值來解決
優(yōu)化前的代碼

function test(fruit) { 
  if (fruit && fruit.name)  {
    console.log (fruit.name);
  } else {
    console.log("unknown");
  }
}

test(undefined); // unknown
test({ }); // unknown
test({ name: "apple", color: "red" }); // apple

優(yōu)化后的代碼

function test({name} = {}) {
  console.log (name || "unknown");
}

test(undefined); // unknown
test({ }); // unknown
test({ name: "apple", color: "red" }); // apple
使用map的方式來替換switch

優(yōu)化前代碼

function test(color) {
  switch (color) {
    case "red":
      return ["apple", "strawberry"];
    case "yellow":
      return ["banana", "pineapple"];
    case "purple":
      return ["grape", "plum"];
    default:
      return [];
  }
}

test(null); // []
test("yellow"); // ["banana", "pineapple"]

優(yōu)化后代碼

  const fruitColor = {
    red: ["apple", "strawberry"],
    yellow: ["banana", "pineapple"],
    purple: ["grape", "plum"]
  };

function test(color) {
  return fruitColor[color] || [];
}

使用map方式的代碼

  const fruitColor = new Map()
    .set("red", ["apple", "strawberry"])
    .set("yellow", ["banana", "pineapple"])
    .set("purple", ["grape", "plum"]);

function test(color) {
  return fruitColor.get(color) || [];
}
把以上內(nèi)容優(yōu)化項目代碼

例:處理前端角色管理問題

封裝role字典,加入工具類(util.js內(nèi))

// 角色
const roles = {
  CUSTOMER: {
    value: "CUSTOMER",
    idValue: "uid",
    url: "/pages/home/index"
  },
  OIL_ATTENDANT: {
    value: "OIL_ATTENDANT",
    idValue: "ouid",
    url: "/pages/oiler/index"
  }
}

// 根據(jù)key獲取角色
const getRoleByKey = (role) => {
  return roles[role] || ""
}
// 獲取角色主頁
const getRoleUrl = (role) => {
  return roles[role].url || ""
}
// 獲取當(dāng)前用戶角色
const checkRoleByIdValue = () => {
  const app = getApp();
  const obj = {
    uid: "CUSTOMER",
    ouid: "OIL_ATTENDANT"
  }
  let currentRole
  Object.keys(obj).forEach(k => {
    if (app.globalData[k]) {
      currentRole = obj[k]
    }
  })
  return currentRole
}
// 角色id值
const roleIdIs = (role) => {
  return roles[role].idValue
}

頁面內(nèi)引入util方法

import {
  getRoleByKey,
  getRoleUrl,
  checkRoleByIdValue
} from "../../utils/utils.js"

// 不再使用if else來判斷角色,根據(jù)不同角色的key來儲存數(shù)據(jù),直接使用工具類,一行代碼搞定
saveGlobalAndStorageSync(`${currentRole.idValue}`,data.userInfo)

const roleUrl = getRoleUrl(checkRoleByIdValue())

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/99770.html

相關(guān)文章

  • Promise到底解決了什么問題

    摘要:我的博客大家都知道解決了回調(diào)地獄的問題。這就是異步的嵌套帶來的可讀性的問題,它是由異步的運行機制引起的。在與第三方團隊溝通之后問題得到了解決。這不但使代碼變得臃腫不堪,還進一步加劇了可讀性的問題。的特征保證了可以解決信任問題。 我的github博客 https://github.com/zhuanyongxigua/blog 大家都知道Promise解決了回調(diào)地獄的問題。說到回調(diào)地獄,...

    yibinnn 評論0 收藏0
  • 一篇文章徹底說清JS的深拷貝/淺拷貝

    摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實JS基礎(chǔ),將來好去面試官前秀操作...

    J4ck_Chan 評論0 收藏0
  • 一篇文章徹底說清JS的深拷貝/淺拷貝

    摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實JS基礎(chǔ),將來好去面試官前秀操作...

    lakeside 評論0 收藏0
  • 一篇文章徹底說清JS的深拷貝/淺拷貝

    摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實JS基礎(chǔ),將來好去面試官前秀操作...

    big_cat 評論0 收藏0
  • ES6—Async與異步編程(11)

    摘要:所以異步編程對語言太重要。異步編程我們就以用戶注冊這個特別常見的場景為例,講講異步編程。這種層層嵌套被稱為回調(diào)地獄。相比回調(diào)函數(shù)而言,代碼可讀性更高,代碼的執(zhí)行順序一目了然。函數(shù)內(nèi)部語句返回的值,會成為方法回調(diào)函數(shù)的參數(shù)。 單線程是Javascript語言最本質(zhì)的特性之一,Javascript引擎在運行js代碼的時候,同一個時間只能執(zhí)行單個任務(wù)。 這種模式的好處是實現(xiàn)起來比較簡單,執(zhí)行...

    chengjianhua 評論0 收藏0

發(fā)表評論

0條評論

zhoutk

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<