最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在面試中手寫出javascript節(jié)流和防抖函數(shù)

 更新時(shí)間:2020年10月22日 16:59:30   作者:酷兒q  
這篇文章主要介紹了如何在面試中手寫出javascript節(jié)流和防抖函數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

面試的時(shí)候我們經(jīng)常會(huì)問別人是理解什么是節(jié)流和防抖,嚴(yán)格的可能要求你寫出節(jié)流和防抖函數(shù),這里我們拋開loadsh工具庫手寫節(jié)流和防抖

1.節(jié)流函數(shù)throttle

// 節(jié)流方案1,每delay的時(shí)間執(zhí)行一次,通過開關(guān)控制
function throttle(fn, delay, ctx) {
  let isAvail = true
  return function () {
    let args = arguments // 開關(guān)打開時(shí),執(zhí)行任務(wù) 
    if (isAvail) {
      fn.apply(ctx, args)
      isAvail = false // delay時(shí)間之后,任務(wù)開關(guān)打開 
      setTimeout(function () { isAvail = true }, delay)
    }
  }
}
// 節(jié)流方案2,通過計(jì)算開始和結(jié)束時(shí)間
function throttle(fn,delay){
      // 記錄上一次函數(shù)出發(fā)的時(shí)間
      var lastTime = 0
      return function(){
      // 記錄當(dāng)前函數(shù)觸發(fā)的時(shí)間
      var nowTime = new Date().getTime()
      // 當(dāng)當(dāng)前時(shí)間減去上一次執(zhí)行時(shí)間大于這個(gè)指定間隔時(shí)間才讓他觸發(fā)這個(gè)函數(shù)
      if(nowTime - lastTime > delay){
        // 綁定this指向
        fn.call(this)
        //同步時(shí)間
        lastTime = nowTime
      }
      }
    }

2.防抖debounceTail

2.1)只執(zhí)行首次

// 防抖 且首次執(zhí)行
// 采用原理:第一操作觸發(fā),連續(xù)操作時(shí),最后一次操作打開任務(wù)開關(guān)(并非執(zhí)行任務(wù)),任務(wù)將在下一次操作時(shí)觸發(fā))
function debounceStart(fn, delay, ctx) {
  let immediate = true 
  let movement = null
  return function() {
    let args = arguments
    
    // 開關(guān)打開時(shí),執(zhí)行任務(wù)
    if (immediate) {
      fn.apply(ctx, args)
      immediate = false
    }
    // 清空上一次操作
    clearTimeout(movement)
    
    // 任務(wù)開關(guān)打開
    movement = setTimeout(function() {
      immediate = true
    }, delay)
  }
}

2.2)只執(zhí)行最后一次

// 防抖 尾部執(zhí)行
// 采用原理:連續(xù)操作時(shí),上次設(shè)置的setTimeout被clear掉
function debounceTail(fn, delay, ctx) {
  let movement = null
  return function() {
    let args = arguments
    
    // 清空上一次操作
    clearTimeout(movement)
    
    // delay時(shí)間之后,任務(wù)執(zhí)行
    movement = setTimeout(function() {
      fn.apply(ctx, args)
    }, delay)
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript展開運(yùn)算符用法及實(shí)際應(yīng)用詳解

    JavaScript展開運(yùn)算符用法及實(shí)際應(yīng)用詳解

    展開運(yùn)算符是JavaScript中的語法糖,用三個(gè)點(diǎn)(...)表示,廣泛應(yīng)用于數(shù)組和對(duì)象的操作,本文介紹了其基本用法,如在數(shù)組和對(duì)象中的應(yīng)用,合并數(shù)組或?qū)ο?更新對(duì)象屬性等,還探討了展開運(yùn)算符的高級(jí)應(yīng)用,需要的朋友可以參考下
    2024-09-09
  • 一文詳解Javascript內(nèi)存機(jī)制與垃圾回收

    一文詳解Javascript內(nèi)存機(jī)制與垃圾回收

    這篇文章主要給大家詳細(xì)介紹了Javascript的內(nèi)存機(jī)制與垃圾回收,文中又詳細(xì)的代碼示例,對(duì)我們學(xué)習(xí)Javascript有一定的幫助,需要的同學(xué)可以借鑒閱讀
    2023-06-06
  • 小程序外賣訂單界面的示例代碼

    小程序外賣訂單界面的示例代碼

    這篇文章主要介紹了小程序外賣訂單界面的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • el-input限制輸入只允許輸入浮點(diǎn)型的解決思路

    el-input限制輸入只允許輸入浮點(diǎn)型的解決思路

    本文主要是記錄,el-input怎么限制輸入只允許輸入浮點(diǎn)型,注意是輸入的時(shí)候限制只允許輸入浮點(diǎn)型,而不是輸入完提交的時(shí)候再校驗(yàn)提示,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • typescript中聲明合并介紹

    typescript中聲明合并介紹

    這篇文章主要介紹了typescript中聲明合并介紹,類型合并表明編譯器將合并兩個(gè)分開的并且名稱相同的聲明,合并之后的聲明擁有兩個(gè)聲明的特點(diǎn),任意數(shù)量的聲明可以被合并,不僅限兩個(gè),更多相關(guān)內(nèi)容需要的朋友可以參考下面文章內(nèi)容
    2022-09-09
  • 小程序animate動(dòng)畫實(shí)現(xiàn)直播間點(diǎn)贊

    小程序animate動(dòng)畫實(shí)現(xiàn)直播間點(diǎn)贊

    這篇文章主要為大家詳細(xì)介紹了小程序animate動(dòng)畫實(shí)現(xiàn)直播間點(diǎn)贊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Bootstrap在線電子商務(wù)網(wǎng)站實(shí)戰(zhàn)項(xiàng)目5

    Bootstrap在線電子商務(wù)網(wǎng)站實(shí)戰(zhàn)項(xiàng)目5

    這篇文章主要為大家分享了Bootstrap在線電子商務(wù)網(wǎng)站實(shí)戰(zhàn)項(xiàng)目,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 利用Js的console對(duì)象,在控制臺(tái)打印調(diào)式信息測(cè)試Js的實(shí)現(xiàn)

    利用Js的console對(duì)象,在控制臺(tái)打印調(diào)式信息測(cè)試Js的實(shí)現(xiàn)

    下面小編就為大家?guī)硪黄肑s的console對(duì)象,在控制臺(tái)打印調(diào)式信息測(cè)試Js的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • js實(shí)現(xiàn)的仿Photoshop鼠標(biāo)滾輪控制輸入框取值(修正兼容Chrome)

    js實(shí)現(xiàn)的仿Photoshop鼠標(biāo)滾輪控制輸入框取值(修正兼容Chrome)

    一直很想做這個(gè)效果,原理是監(jiān)聽鼠標(biāo)滾輪事件;可將此效果繼續(xù)發(fā)散到其他應(yīng)用上,如圖片縮放,頁面縮放等。
    2010-02-02
  • 微信小程序視圖容器和基本內(nèi)容組件圖文詳解

    微信小程序視圖容器和基本內(nèi)容組件圖文詳解

    小程序提供了豐富的基礎(chǔ)組件給開發(fā)者,開發(fā)者可以像搭積木一樣,組合各種組件拼合成自己的小程序,下面這篇文章主要給大家介紹了關(guān)于微信小程序視圖容器和基本內(nèi)容組件的相關(guān)資料,需要的朋友可以參考下
    2022-07-07

最新評(píng)論

木里| 原平市| 科尔| 河西区| 巨鹿县| 航空| 界首市| 聂荣县| 寻乌县| 新津县| 绥滨县| 宁阳县| 增城市| 尼勒克县| 安阳县| 建阳市| 上栗县| 梅河口市| 静乐县| 新兴县| 通州市| 平罗县| 汝城县| 大洼县| 留坝县| 东乡族自治县| 沂南县| 桂林市| 伊宁县| 神农架林区| 高陵县| 常宁市| 阆中市| 凌源市| 靖安县| 宜君县| 女性| 莱阳市| 保靖县| 武胜县| 岳池县|