中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站開發(fā)長(zhǎng)沙做好網(wǎng)絡(luò)推廣的技巧

網(wǎng)站開發(fā)長(zhǎng)沙,做好網(wǎng)絡(luò)推廣的技巧,新型冠狀病毒,什么網(wǎng)站可以免費(fèi)做宣傳寫點(diǎn)東西《Javascript switch 語句的替代方法》 那么 switch 語句有什么問題? Object Literal 查找的替代方法 將我們學(xué)到的東西變成一個(gè)實(shí)用函數(shù) 您需要的一切都在一個(gè)地方# [](#javascript-version) Javascript 版本Tyepscript version🌟更多精彩 本文…

寫點(diǎn)東西《Javascript switch 語句的替代方法》

  • 那么 switch 語句有什么問題?
  • Object Literal 查找的替代方法
  • 將我們學(xué)到的東西變成一個(gè)實(shí)用函數(shù)
  • 您需要的一切都在一個(gè)地方# [](#javascript-version) Javascript 版本
  • Tyepscript version
  • 🌟更多精彩

在這里插入圖片描述

本文擴(kuò)展了 Todd Motto 關(guān)于用對(duì)象字面量替換 switch 語句的想法。這是過時(shí)、笨拙且冗長(zhǎng)的 switch 語句的一種非常簡(jiǎn)潔美觀的替代方法。在本文的最后,您將獲得一個(gè)基于 Todd 解決方案的實(shí)用程序函數(shù),該函數(shù)對(duì)開發(fā)人員更加友好,因此請(qǐng)堅(jiān)持到最后!

如果您對(duì)技術(shù)細(xì)節(jié)不感興趣,只想了解實(shí)用程序函數(shù),請(qǐng)向下滾動(dòng)到最后一節(jié)(您需要的一切都在一個(gè)地方)。

那么 switch 語句有什么問題?

雖然 switch 語句在某些情況下很有用,但許多人認(rèn)為它不是 Javscript 最適合其用途的設(shè)計(jì)。它不如其他結(jié)構(gòu)靈活、可讀和可維護(hù)。

例如,對(duì) switch 語句的主要批評(píng)之一是其貫穿行為。如果您忘記在 case 的末尾包含 break 語句,則控制權(quán)將貫穿到下一個(gè) case ,從而導(dǎo)致意外行為,如下面的示例所示。這可能會(huì)使代碼更容易出錯(cuò)且更難維護(hù)。

switch (fruit) {case 'apple':console.log('Apple selected');// Missing break statement, falls through to the next casecase 'orange':console.log('Orange selected');break;case 'banana':console.log('Banana selected');break;default:console.log('Unknown fruit');
}

在這個(gè)示例中,如果 fruit 為 'apple' ,則 "Apple selected""Orange selected" 都將被記錄。

Object Literal 查找的替代方法

switch 語句相比,Object Literal 更靈活、更具表現(xiàn)力。

以下是如何使用它們僅返回 string 值。

const getDate (unit) {var date = {'year': '2024','month': 'January','day': '21','default': 'Default value'};return (date[unit] || date['default']);
}var month = getDate('month');
console.log(month); // January

有時(shí)我們需要編寫更復(fù)雜的代碼,而僅返回 string 是不夠的。我們可以進(jìn)一步改進(jìn)上述代碼,在其中使用函數(shù)而不是字符串,以便我們可以包含更復(fù)雜的代碼。

const getDate (unit) {var date = {'year': () => {// do more complicated stuff here// just returning a string in this casereturn '2024';},'month': () => {return 'January';},'day': () => {return '21';},'default': () => {return 'Default value'}};// we return the Object literal's function invokedreturn (date[unit] || date['default'])();
}var month = getDate('month');
console.log(month); // January

但是如果我們想要一個(gè)貫穿行為呢?我們可以輕松地使用對(duì)象字面量來實(shí)現(xiàn)這一點(diǎn),它更具可讀性、聲明性和更不易出錯(cuò)。它還不會(huì)涉及添加或刪除 break ,而這是我們正在尋找的。

const getDayType (day) {const isWeekDay = () => {return 'Weekday';}const isWeekEnd = () => {return 'Weekend';}var days = {'monday': isWeekDay,'tuesday': isWeekDay,'wednesday': isWeekDay,'thursay': isWeekDay,'friday': isWeekDay,'saturday': isWeekEnd,'sunday': isWeekEnd,  'default': () => {return 'Default value'}};// we return the Object literal's function invoked  return (days[day] || days['default'])();
}var dayType = getDayType('sunday');
console.log(dayType); // WeekEnd

將我們學(xué)到的東西變成一個(gè)實(shí)用函數(shù)

既然我們已經(jīng)學(xué)會(huì)了如何使用 Object Literal 而不是 switch ,那么讓我們根據(jù)學(xué)到的知識(shí)構(gòu)建一個(gè)實(shí)用函數(shù),以進(jìn)一步簡(jiǎn)化我們的生活。

我們稱我們的函數(shù)為 switchCase 。它接收一個(gè)具有 2 個(gè)屬性的對(duì)象: casesdefaultCase 。Cases 是將容納我們案例的對(duì)象字面量,而 defaultCase 是…嗯,默認(rèn)案例。

const switchCase = ({cases, defaultCase}) {}

switchCase 是一個(gè)返回回調(diào)函數(shù)的高階函數(shù)?;卣{(diào)函數(shù)接收 switch 表達(dá)式。

const switchCase = ({cases, defaultCase}) {return (expression) => {}
}

現(xiàn)在,回調(diào)函數(shù)需要做的就是返回調(diào)用的對(duì)象字面量函數(shù)。

const switchCase = ({cases, defaultCase}) {return (expression) => {return (cases[expression] || defaultCase)();}
}

就是這樣!現(xiàn)在讓我們看一個(gè)如何使用它的示例。

let date = new Date()const today = switchCase({cases: {year: () => date.getFullYear(),month: () => date.getMonth() + 1,day: () => date.getDate()},defaultCase: () => date
})today('year') // current year
today('month') // current month
today('day') // current day
today('century') // default case - returns the current date Object

對(duì)于 typescript 用戶,我們可以利用泛型來允許以后要調(diào)用該函數(shù)的用戶指定他們希望對(duì)象字面量函數(shù)返回的類型。

type SwitchCase<T> = {cases: {[key: string]: () => T},defaultCase: () => T
} const switchCase = <T,>({cases, defaultCase}: SwitchCase<T>) => {return (expression: string) => {return (cases[expression] || defaultCase)()}
}

這就是我們?nèi)绾问褂盟姆绞健U?qǐng)注意,我們不必總是指定類型,因?yàn)?Typescript 會(huì)自動(dòng)推斷它,除非它是多個(gè)類型的聯(lián)合,如下所示。

let date = new Date()const today = switchCase<number | Date>({cases: {year: () => date.getFullYear(),month: () => date.getMonth() + 1,day: () => date.getDate()},defaultCase: () => date
})today('year') // current year
today('month') // current month
today('day') // current day
today('century') // default case - returns the current date Object

您需要的一切都在一個(gè)地方# Javascript 版本

實(shí)用程序函數(shù):

const switchCase = ({cases, defaultCase}) => (expression) => (cases[expression] || defaultCase)()

用法: Tyepscript 版本

let date = new Date()const today = switchCase({cases: {year: () => date.getFullYear(),month: () => date.getMonth() + 1,day: () => date.getDate()},defaultCase: () => date
})today('year') // current year
today('month') // current month
today('day') // current day
today('century') // default case - returns the current date Object

Tyepscript version

實(shí)用功能:

const switchCase = <T,>({cases, defaultCase}: {cases: {[key: string]: () => T}, defaultCase: () => T}) => (expression: string) => (cases[expression] || defaultCase)()

用法:

let date = new Date()const today = switchCase<number | Date>({cases: {year: () => date.getFullYear(),month: () => date.getMonth() + 1,day: () => date.getDate()},defaultCase: () => date
})today('year') // current year
today('month') // current month
today('day') // current day
today('century') // default case - returns the current date Object

🌟更多精彩

點(diǎn)擊👉這里~~

http://www.risenshineclean.com/news/54862.html

相關(guān)文章:

  • 學(xué)編程的費(fèi)用一般是多少seo整站優(yōu)化哪家專業(yè)
  • 非法網(wǎng)站開發(fā)簡(jiǎn)述網(wǎng)絡(luò)營(yíng)銷的概念
  • 網(wǎng)站多少錢一年seo網(wǎng)站管理
  • 青島做優(yōu)化網(wǎng)站哪家好公司網(wǎng)絡(luò)營(yíng)銷推廣
  • 江西萍鄉(xiāng)做網(wǎng)站公司培訓(xùn)機(jī)構(gòu)
  • 溫州科技網(wǎng)站建設(shè)論壇seo教程
  • 化工網(wǎng)站模板下載免費(fèi)網(wǎng)站推廣網(wǎng)站不用下載
  • 北京綜合網(wǎng)站建設(shè)報(bào)價(jià)網(wǎng)站排名英文
  • 曲靖 曲靖網(wǎng)站建設(shè)軟件(app)開發(fā)有人百度看片嗎
  • 上海發(fā)布官網(wǎng)首頁seo輿情優(yōu)化
  • 設(shè)計(jì)專業(yè)干貨推薦網(wǎng)站代發(fā)軟文
  • wordpress站長(zhǎng)統(tǒng)計(jì)韓國(guó)seocaso
  • 網(wǎng)站連接數(shù)據(jù)庫(kù)失敗免費(fèi)建網(wǎng)站哪家好
  • wordpress大學(xué)主題下載地址恩施seo整站優(yōu)化哪家好
  • 17一起做網(wǎng)站普寧站免費(fèi)推廣的方式
  • 懸停顯示 wordpress杭州seo關(guān)鍵詞優(yōu)化公司
  • 做電商網(wǎng)站一般需要什么流程谷歌seo是什么職業(yè)
  • 公司網(wǎng)站建設(shè)應(yīng)注意愛論壇
  • 網(wǎng)站開發(fā)需要用到的技術(shù)醴陵網(wǎng)站制作
  • 遼寧網(wǎng)站建設(shè)多少錢活動(dòng)推廣文案
  • 廣告做圖網(wǎng)站廣州新聞發(fā)布
  • axure做的網(wǎng)站sem競(jìng)價(jià)推廣怎么做
  • 做網(wǎng)站賭博的網(wǎng)站手機(jī)優(yōu)化
  • 蘭州網(wǎng)站seo費(fèi)用企業(yè)品牌推廣策劃方案
  • pHP可以做論壇網(wǎng)站嗎如何去除痘痘效果好
  • 電子商務(wù) 網(wǎng)站開發(fā)手機(jī)百度安裝下載
  • 鄭州官網(wǎng)網(wǎng)站推廣優(yōu)化公司品牌廣告和效果廣告的區(qū)別
  • 網(wǎng)站內(nèi)頁百度不收錄seo整站優(yōu)化公司持續(xù)監(jiān)控
  • 網(wǎng)站的聯(lián)系我們?cè)趺醋錾钲谕赓Q(mào)網(wǎng)絡(luò)推廣渠道
  • 谷歌seo優(yōu)化排名搜索網(wǎng)站排名優(yōu)化