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

資訊專欄INFORMATION COLUMN

用高階函數(shù)實(shí)現(xiàn)地址的延遲搜索

Nosee / 2239人閱讀

摘要:原文高階函數(shù)在中高階函數(shù)實(shí)際上就是控制函數(shù)的函數(shù),有別于普通函數(shù)傳遞變量,高階函數(shù)傳遞的是函數(shù),并且輸出函數(shù)這對(duì)于初學(xué)者來說足夠燒腦,也足夠驚艷。初識(shí)時(shí)常常會(huì)被被震撼了,原來函數(shù)還可以這么用這是設(shè)計(jì)模式與開發(fā)實(shí)踐的單例模式的一個(gè)高階函數(shù)。

原文

高階函數(shù)

在javascript中高階函數(shù)實(shí)際上就是控制函數(shù)的函數(shù),有別于普通函數(shù)傳遞變量,高階函數(shù)傳遞的是函數(shù),并且輸出函數(shù)

這對(duì)于js初學(xué)者來說足夠燒腦,也足夠驚艷。
初識(shí)時(shí)常常會(huì)被被震撼了,原來函數(shù)還可以這么用

var getSingle = function( fn ){
    var result;
    return function(){
        return result || ( result = fn .apply(this, arguments ));
    } 
};

這是《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》的單例模式的一個(gè)高階函數(shù)。

地址延遲搜索

對(duì)于地址輸入頁面,我們常常要定位用戶的地址,為了保證定位的地址是用戶輸入的完整地址,我們需要對(duì)輸入進(jìn)行延遲處理,用過外賣軟件的大家肯定相當(dāng)熟悉。

實(shí)現(xiàn)這一流程的一種如下:

html

  
javascript
var content = document.querySelector("#content")
var result = document.querySelector("#result")
var debounce = function(fn, delay) {
  var timer = null
  return function(...args) {
    clearTimeout(timer);
    timer = setTimeout(() => fn.apply(this, args), delay);
  }
}
var fetch = function() {
  // 異步定位
  result.innerHTML = `你搜索的是${content.value}`
}
var search = debounce(fetch, 1500)
content.addEventListener("input", search)
代碼分析 html

html代碼中input用來獲取用戶輸入,div用來展示用戶輸入定位到的地址,實(shí)際工作中我們會(huì)調(diào)用地圖api異步獲取位置信息再展示出來,這里簡(jiǎn)化為延遲輸出用戶的輸入

javascript

其中
fetch函數(shù)用來實(shí)現(xiàn)異步獲取數(shù)據(jù)的功能
search函數(shù)生成具體的延遲1500ms處理的fetch函數(shù)
debounce函數(shù)用來實(shí)現(xiàn)對(duì)于fn的延遲處理,它能創(chuàng)建一個(gè)函數(shù)用來實(shí)現(xiàn):

清除一次的計(jì)時(shí)器

創(chuàng)建一個(gè)新的計(jì)時(shí)器

這里debounce其實(shí)就是一個(gè)高階函數(shù),他抽象了一個(gè)處理fn的過程,它可以處理任意需要該過程的函數(shù)fn而不用在意fn具體是什么。這體現(xiàn)了函數(shù)的冪等性。

小結(jié)

這樣具有冪等性高階函數(shù)雖然初見時(shí)可能覺得抽象且難以理解,但其不僅體現(xiàn)了數(shù)學(xué)上邏輯性,也由于它高度抽象使得基本不會(huì)被外部變量影響,可以輕松地寫出測(cè)試用例,可以重復(fù)地用在需要該邏輯的腳本中不易出錯(cuò)。

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

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

相關(guān)文章

  • 漫談javascript函數(shù)式編程

    摘要:高階函數(shù)不是的所特有的,其他編程語言也有。高階函數(shù)面向切面編程面向切面編程這種思想在開發(fā)中比較常見,主要就是將一些與核心業(yè)務(wù)無關(guān)的功能抽離出來,比如異常處理,日志統(tǒng)計(jì)等。 javascript的函數(shù)式語言特性 我們知道JavaScript使一門面向?qū)ο蟮木幊陶Z言,但這門語言同時(shí)擁有很多函數(shù)式語言的特性。 JavaScript的設(shè)計(jì)者在設(shè)計(jì)最初就參考了LISP方言之一的Scheme,引入...

    liaorio 評(píng)論0 收藏0
  • JavaScript高階函數(shù)應(yīng)

    摘要:定義高階函數(shù)是指至少滿足下列條件之一的函數(shù)函數(shù)可以作為參數(shù)被傳遞函數(shù)可以作為返回值輸出。參考資料設(shè)計(jì)模式與開發(fā)實(shí)踐第章高階函數(shù) 定義 高階函數(shù)是指至少滿足下列條件之一的函數(shù): 函數(shù)可以作為參數(shù)被傳遞; 函數(shù)可以作為返回值輸出。 JavaScript語言中的函數(shù)顯然滿足高階函數(shù)的條件,在實(shí)際開發(fā)中,無論是將函數(shù)當(dāng)作參數(shù)傳遞,還是讓函數(shù)的執(zhí)行結(jié)果返回另外一個(gè)函數(shù),這兩種情形都有很多應(yīng)用...

    shusen 評(píng)論0 收藏0
  • 【進(jìn)階 6-2 期】深入高階函數(shù)應(yīng)之柯里化

    摘要:引言上一節(jié)介紹了高階函數(shù)的定義,并結(jié)合實(shí)例說明了使用高階函數(shù)和不使用高階函數(shù)的情況。我們期望函數(shù)輸出,但是實(shí)際上調(diào)用柯里化函數(shù)時(shí),所以調(diào)用時(shí)就已經(jīng)執(zhí)行并輸出了,而不是理想中的返回閉包函數(shù),所以后續(xù)調(diào)用將會(huì)報(bào)錯(cuò)。引言 上一節(jié)介紹了高階函數(shù)的定義,并結(jié)合實(shí)例說明了使用高階函數(shù)和不使用高階函數(shù)的情況。后面幾部分將結(jié)合實(shí)際應(yīng)用場(chǎng)景介紹高階函數(shù)的應(yīng)用,本節(jié)先來聊聊函數(shù)柯里化,通過介紹其定義、比較常見的...

    stackvoid 評(píng)論0 收藏0
  • Javascript高階函數(shù)

    摘要:判斷數(shù)據(jù)的類型輸出高階函數(shù)實(shí)現(xiàn)面向切面編程的主要作用是把一些核心業(yè)務(wù)邏輯模塊無關(guān)的功能抽離出來,這些無關(guān)的模塊包括日志統(tǒng)計(jì),安全控制,異常處理。 高階函數(shù)是指至少滿足以下條件之一的函數(shù): 函數(shù)可以作為參數(shù)被傳遞 函數(shù)可以作為返回值輸出 函數(shù)作為參數(shù)傳遞 把參數(shù)當(dāng)作參數(shù)傳遞, 抽離出一部分容易變化的業(yè)務(wù)邏輯,將它放在函數(shù)參數(shù)中,這樣可以分離業(yè)務(wù)代碼中變化與不變的部分。其中一個(gè)重要的應(yīng)...

    史占廣 評(píng)論0 收藏0
  • JS基礎(chǔ)——高階函數(shù)

    摘要:定義高階函數(shù)是至少滿足下面一個(gè)條件的函數(shù)接收一個(gè)或多個(gè)函數(shù)作為參數(shù)。當(dāng)然我們也可以通過高階函數(shù)來自己實(shí)現(xiàn)我們可以通過封裝高階函數(shù)來復(fù)用和簡(jiǎn)化我們的代碼。 定義 高階函數(shù)是至少滿足下面一個(gè)條件的函數(shù):1、接收一個(gè)或多個(gè)函數(shù)作為參數(shù)。比如filter函數(shù)2、返回一個(gè)函數(shù)。 比如bind函數(shù)舉個(gè)例子:比如我們要篩數(shù)組[1,2,3,4,5]中大于3的所有元素,我們通常的實(shí)現(xiàn)方法為: let ...

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

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

0條評(píng)論

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