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

資訊專欄INFORMATION COLUMN

每日 30 秒 ? 函數(shù)參數(shù)騷操作

MonoLog / 3128人閱讀

前言
函數(shù)、參數(shù)、解構(gòu)、優(yōu)雅、可讀性、技巧

不管是調(diào)用第三方庫或者是項(xiàng)目自身的函數(shù),開發(fā)過程中總少不了函數(shù)。可以說函數(shù)是解放代碼的第一生產(chǎn)力,有的同學(xué)會(huì)說了那你把類放在那里了。其實(shí)用函數(shù)和數(shù)據(jù)一樣可以模擬出來類,類更多的是對(duì)函數(shù)的歸集復(fù)用進(jìn)行擴(kuò)充升級(jí)。

在調(diào)用函數(shù)時(shí)不得不提的就是 參數(shù) 了,很多小伙伴寫函數(shù)很容易就寫成了:

function area (width, height) {  
    return width * height;
}

兩個(gè)參數(shù)還好腦子記得住,但是下面這種情況乍辦:

function infomation (
    name, sex, height, birthday, 
    color, likes, follow, age
) {
    // ...
}

這么多參數(shù)每次開發(fā)調(diào)用時(shí)有使用 ide 會(huì)自動(dòng)提示還好,如果沒有則有可能需要翻文檔或者跳轉(zhuǎn)到定義處查看,除了比較麻煩點(diǎn)外還行。

程序員何必為難程序員。

不知道大家有沒有和別人對(duì)接過開發(fā),有的同學(xué)開發(fā)有時(shí)候不會(huì)考慮別人是否對(duì)他的代碼有依賴,直接腦袋一拍就給你的參數(shù)順序?qū)φ{(diào)了,結(jié)果代碼提交后全軍崩潰各種報(bào)錯(cuò)飄紅

傳遞對(duì)象而不是參數(shù)列表

可以利用 JavaScript 的對(duì)象來傳遞參數(shù):

function infomation (user) {
    // user.name
}

infomation({ name: "xiaoer", age: 18 })

相對(duì)于參數(shù)列表傳遞對(duì)象屬性更好記也沒有強(qiáng)制的順序,如果命名足夠清晰在后期維護(hù)代碼的時(shí)候甚至只要看屬性名就可以馬上理解過來。如果其他同學(xué)開發(fā)新的功能也不會(huì)怕他順序亂調(diào)了,但是最好要對(duì)新加的參數(shù)做出兼容,不然還是會(huì)讓依賴的其他函數(shù)一路飄紅。

使用解構(gòu)賦值

參數(shù)列表被對(duì)象替換解決了參數(shù)列表順序的問題,可是每次調(diào)用的時(shí)候都需要從對(duì)象中取值使得函數(shù)每次都要訪問對(duì)象,帶來了變量長(zhǎng)度變長(zhǎng)和很多無意義的賦值。再者如果調(diào)用者不小心多傳遞了參數(shù),再不巧函數(shù)中遍歷了對(duì)象這可能會(huì)產(chǎn)生BUG,可以利用解構(gòu)賦值來解決:

function infomation ({ name, age, height }) {

}

這樣既對(duì)傳遞的參數(shù)做出了防御又可以方便的使用參數(shù)。

使用默認(rèn)值
你永遠(yuǎn)不知道用戶會(huì)怎么使用產(chǎn)品。

產(chǎn)品上線后總會(huì)出現(xiàn)各種奇奇怪怪的錯(cuò)誤,用戶總是不按照預(yù)期進(jìn)行操作產(chǎn)品,不斷的 BUG 傳來實(shí)在讓人難受。

程序員何必為難程序員。

其實(shí)在調(diào)用函數(shù)時(shí)我們也是一個(gè)用戶,有的參數(shù)不能為空但是我們卻給出了空值,導(dǎo)致函數(shù)不能按預(yù)期執(zhí)行。在書寫函數(shù)時(shí)應(yīng)該做好別人調(diào)用函數(shù)時(shí)不按套路出牌的情況,例如給出默認(rèn)值和對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)化:

function infomation ({ name = "anonymous", age = 0, height = 160 }) {
    // ...
}

當(dāng)然你也可以使用 TypeScript 等工具來提升編程的安全性,但 巧婦難為無米之炊 在有的時(shí)候不是你想用就能用的,需要整個(gè)公司一起進(jìn)行技術(shù)的升級(jí)。

參數(shù)變?yōu)榭蛇x參數(shù)

上面例子中的函數(shù)在 infomation({ age: 16 }) 這樣調(diào)用的情況下,可以按照預(yù)期的默認(rèn)值執(zhí)行。但是想讓這個(gè)對(duì)象也可選的時(shí)候 infomation() 將會(huì)報(bào)錯(cuò),因?yàn)闆]有對(duì)象讓其解構(gòu)。可以利用 {} 來使得對(duì)象也可選:

function infomation ({ name = "anonymous", age = 0, height = 160 } = {}) {
    // ...
}
重命名

有時(shí)候需要對(duì)參數(shù)進(jìn)行重命名,但是已經(jīng)很多地方都使用了這個(gè)參數(shù)時(shí)。可以在函數(shù)執(zhí)行最開始的時(shí)候進(jìn)行重命名,但是這樣顯然不夠 geek(主要是不夠偷懶)依舊利用 解構(gòu)賦值 來實(shí)現(xiàn)重命名:

function infomation ({ name:username = "anonymous", age = 0, height = 160 } = {}) {
    // ...
}

當(dāng)然 解構(gòu)賦值 也可以在平常開發(fā)中使用,方便我們寫出 規(guī)范奇淫技巧,帶來偷懶摸魚同時(shí)也帶來優(yōu)雅。

一起成長(zhǎng)
在困惑的城市里總少不了并肩同行的 伙伴 讓我們一起成長(zhǎng)。

如果您想讓更多人看到文章可以點(diǎn)個(gè) 點(diǎn)贊

如果您想激勵(lì)小二可以到 Github 給個(gè) 小星星

如果您想與小二更多交流添加微信 m353839115

本文原稿來自 PushMeTop

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

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

相關(guān)文章

  • 每日 30 ? 優(yōu)雅三連擊

    showImg(https://segmentfault.com/img/remote/1460000018709378?w=900&h=500); 簡(jiǎn)介 短路運(yùn)算、逗號(hào)運(yùn)算、簡(jiǎn)化條件語句、初始化小技巧 昨天一個(gè)同學(xué)在 URL 大爆炸 問了我一個(gè)問題:這是什么寫法 (data[key] = value, data) 。平時(shí)在寫文章的時(shí)候會(huì)把這些技巧稍微提示一下,認(rèn)為大家都知道這些技巧,引起了小二的...

    Rocture 評(píng)論0 收藏0
  • 每日 30 ? 該不該優(yōu)雅

    showImg(https://segmentfault.com/img/remote/1460000018734296?w=900&h=500); 簡(jiǎn)介 可讀性、性能、Spread、Reduce 在 優(yōu)雅三連擊 中有同學(xué)提到了 可讀性 這個(gè)關(guān)鍵詞,就小二個(gè)人的觀點(diǎn) 在某個(gè)范圍內(nèi)使用比較常用到的小技巧,可以提升一定的可讀性,文中提到的短路運(yùn)算在初始化變量是提升可讀性的,并且在很多提倡優(yōu)化if 語句...

    JohnLui 評(píng)論0 收藏0
  • 每日 30 ? 誰敢與我一戰(zhàn)

    showImg(https://segmentfault.com/img/remote/1460000018771037?w=900&h=500); 簡(jiǎn)介 benchmark、基準(zhǔn)測(cè)試、jsPerf 在 優(yōu)雅插入數(shù)組 一文中大家最多的評(píng)論就是 能不能加個(gè)基準(zhǔn)測(cè)試。小二不是不喜歡加基準(zhǔn)測(cè)試而是現(xiàn)在硬件設(shè)備的性能越來越快了,有時(shí)候一些操作不是性能問題的主要原因,當(dāng)然這不是我們不寫出好代碼的理由。 書寫...

    Dionysus_go 評(píng)論0 收藏0
  • 每日 30 ? 對(duì)海量數(shù)據(jù)進(jìn)行切割

    showImg(https://raw.githubusercontent.com/pushmetop/resource/master/30-seconds-for-everyday/chunk/poster.png); 簡(jiǎn)介 數(shù)據(jù)分割、分頁、異步操作、DOM優(yōu)化 把數(shù)組按指定大小進(jìn)行分組,可以用于分頁、數(shù)據(jù)切割、異步操作數(shù)據(jù)。 // 該源碼來自于 https://30secondsofcode....

    ShevaKuilin 評(píng)論0 收藏0
  • 每日 30 ? 簡(jiǎn)單的 HTTP 工具

    showImg(https://raw.githubusercontent.com/pushmetop/resource/master/30-seconds-for-everyday/simple-http/poster.png); 簡(jiǎn)介 XMLHttpRequest、HTTP 工具原理、XHR jQuery.ajax、axios 和 新的 Web API fetch 在瀏覽器不支持的兼容代碼都是...

    陳偉 評(píng)論0 收藏0

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<