成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

徹底解決if else嵌套問(wèn)題

zhoutk / 843人閱讀

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

徹底解決if else嵌套問(wèn)題

開(kāi)發(fā)過(guò)程中常因?yàn)閕f else過(guò)多導(dǎo)致代碼融于,難以閱讀,今天就我們就一起來(lái)解決這個(gè)問(wèn)題,讓代碼更優(yōu)美,維護(hù)更方便,接盤(pán)俠更開(kāi)心

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

寫(xiě)法一

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

寫(xiě)法二

function test(fruit) {
  // 把同類(lèi)放到一個(gè)中數(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)賦值來(lái)解決
優(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的方式來(lái)替換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)化項(xiàng)目代碼

例:處理前端角色管理問(wèn)題

封裝role字典,加入工具類(lèi)(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] || ""
}
// 獲取角色主頁(yè)
const getRoleUrl = (role) => {
  return roles[role].url || ""
}
// 獲取當(dāng)前用戶(hù)角色
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
}

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

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

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

const roleUrl = getRoleUrl(checkRoleByIdValue())

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

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

相關(guān)文章

  • Promise到底解決了什么問(wèn)題?

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

    yibinnn 評(píng)論0 收藏0
  • 一篇文章徹底說(shuō)清JS的深拷貝/淺拷貝

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

    J4ck_Chan 評(píng)論0 收藏0
  • 一篇文章徹底說(shuō)清JS的深拷貝/淺拷貝

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

    lakeside 評(píng)論0 收藏0
  • 一篇文章徹底說(shuō)清JS的深拷貝/淺拷貝

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

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

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

    chengjianhua 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<