JavaScript實用小技巧化借,大神教你如何避免代碼冗余

直接來主題,給大家分享一些Javascript一些屬性以及方法的使用小技巧捡多。

回調(diào)

函數(shù)可以讓不連續(xù)時間的處理變得更容易蓖康。例如:假定有這么一個序列,由用戶交互開始垒手,向服務(wù)器發(fā)送請求蒜焊,最終現(xiàn)實服務(wù)器的響應(yīng)。最簡單的寫法可能是這樣的:

1

這種方式的問題在于網(wǎng)絡(luò)上的同步請求將會導(dǎo)致客戶端進入假死狀態(tài)科贬。如果網(wǎng)絡(luò)傳輸或者服務(wù)器很慢泳梆,響應(yīng)性的降低是不可接受的。

更好的方式就是發(fā)起異步請求榜掌,提供一個當(dāng)服務(wù)器的相應(yīng)到達時將被調(diào)用的回調(diào)函數(shù)优妙。異步的函數(shù)立即返回,這樣客戶端就不會被阻塞憎账。

2

我們傳遞了一個函數(shù)作為參數(shù)給 send_request_asynchronously 函數(shù)套硼,它將在收到響應(yīng)時被調(diào)用。

模塊

我們可以使用函數(shù)和閉包來構(gòu)造模塊胞皱。模塊是一個提供接口卻隱藏狀態(tài)與現(xiàn)實的函數(shù)或?qū)ο笮耙狻Mㄟ^使用函數(shù)去生產(chǎn)模塊九妈,我們機會可以完全摒棄全局變量的使用,從而緩解這個JavaScript的最為糟糕的特性之一所帶來的影響雾鬼。

打個比方萌朱,假設(shè)我們要給 String 增加一個 deentityify 方法。它的認(rèn)識是尋找字符串中的HTML 自附體并替換為它們對應(yīng)的字符呆贿。在一個對象中保存字符實體的名字和它們中嚷兔,但是全局變量是魔鬼。我們可以把它定義在函數(shù)本身做入,但是那有運行時的損耗冒晰,因為該函數(shù)在每次被執(zhí)行的時候該字面量都會被求值一次。理想的方式是將它放入一個閉包竟块,而且也許還能提供一個增加更多字符實體的拓展方法:

3

這都是術(shù)語JavaScript的干貨壶运,如果有在學(xué)習(xí)前端或者想學(xué)習(xí)前端的朋友,可以一起來我們的前端群621071874浪秘,大家一起學(xué)習(xí)進步蒋情,解決問題,當(dāng)然群里還有各種經(jīng)典案例以及面試小技巧供大參考耸携。

套用

函數(shù)也是值棵癣,從而我們可以用有趣的方式去操作函數(shù)值。套用允許我們將函數(shù)與傳遞給它的參數(shù)相結(jié)合去產(chǎn)生出的一個新的函數(shù)夺衍。

4

add1是把函數(shù)傳遞給add函數(shù)的curry方法后創(chuàng)建的一個函數(shù)狈谊。add1函數(shù)把傳遞給它的參數(shù)的值+1.JavaScript并沒有 curry 方法,但是我們可以通過給 Function.prototype 添加功能開來實現(xiàn)沟沙。

5

curry 方法通過創(chuàng)建一個保留著原始函數(shù)和被套用的參數(shù)的閉包來工作河劝。它返回另外一個函數(shù),該函數(shù)被調(diào)用時矛紫,會返回調(diào)原始函數(shù)的結(jié)果赎瞎,并傳遞調(diào)用 curry 時的參數(shù)加上當(dāng)前調(diào)用的參數(shù)的所有參數(shù)。使它用 Array 和 concat 方法去連接兩個參數(shù)數(shù)組颊咬。

不好的是务甥, arguments 數(shù)組并不是一個真正的數(shù)組,所以它并沒有 concat 方法喳篇。要避開這個問題缓呛,我們必須在兩個 arguments 數(shù)組上都應(yīng)用數(shù)組的 slice 方法。這樣產(chǎn)生出擁有 concat 方法的常規(guī)數(shù)組杭隙。

6

這僅僅只是部分小技巧,如有想獲取更多的小技巧還請關(guān)注我的前端小群哦R蛎睢L翟鳌票髓!

到這,其實我也想把我珍藏許久的與大家分享一下铣耘,畢竟程序員也是男人洽沟,沒什么好解釋的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜗细,一起剝皮案震驚了整個濱河市裆操,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炉媒,老刑警劉巖踪区,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吊骤,居然都是意外死亡缎岗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門白粉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來传泊,“玉大人,你說我怎么就攤上這事鸭巴【煜福” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵鹃祖,是天一觀的道長溪椎。 經(jīng)常有香客問我,道長惯豆,這世上最難降的妖魔是什么池磁? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮楷兽,結(jié)果婚禮上地熄,老公的妹妹穿的比我還像新娘。我一直安慰自己芯杀,他們只是感情好端考,可當(dāng)我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著揭厚,像睡著了一般却特。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筛圆,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天裂明,我揣著相機與錄音,去河邊找鬼太援。 笑死闽晦,一個胖子當(dāng)著我的面吹牛扳碍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仙蛉,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼笋敞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荠瘪?” 一聲冷哼從身側(cè)響起夯巷,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哀墓,沒想到半個月后趁餐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡麸祷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年澎怒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阶牍。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡喷面,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出走孽,到底是詐尸還是另有隱情惧辈,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布磕瓷,位于F島的核電站盒齿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏困食。R本人自食惡果不足惜边翁,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硕盹。 院中可真熱鬧符匾,春花似錦、人聲如沸瘩例。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垛贤。三九已至焰坪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間聘惦,已是汗流浹背某饰。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人露乏。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓碧浊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瘟仿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容