定時器閉包版實現函式節流 視窗縮放

2021-08-19 21:17:55 字數 501 閱讀 6771

不管是resize事件,還是onmouseover事件或其他事件,都存在著惡意及誤操作的情況,而這些操作的頻繁執行對效能會有大量的消耗,在使用者體驗上也不怎麼友好。在前端開發中,開發者通常會使用函式節流(throttle)的方式來避免這種情況。函式節流,也就是控制使用者在觸發兩個事件之間的時間間隔,而不是在觸發下乙個時間後讓事件立即執行。

通過設定定時器settimeout來控制兩個事件執行的時間間隔。

首先採用閉包

(詳細介紹

)方式將函式封裝起來。

function throttle(fn,delay)

}

然後就是相關事件的執行。

var demo = document.getelementbyid("demo");

var num = 0;

window.onresize = throttle(function () ,300);

這樣就可實現函式的節流。

閉包實現函式節流

在一些業務場景中我們可能會用到window.onresize事件或者mousemove等監控型別事件,當使用者做出相關操作的時候,會平凡觸發相應的函式,有可能每秒會觸發幾十甚至上百次,如果函式中有一些dom操作,就會導致瀏覽器卡頓等現象,很多時候我們根本不需要執行這麼多次,這時我們就需要用到函式節流...

for迴圈 js定時器 閉包 自執行函式

for迴圈 js定時器 閉包 自執行函式 前言 面試題目經常會出現這麼一道題目,請將1 10有序每隔一秒輸出。看似這個題目很簡單,但是確難倒了很多js初學者。還有跟這個類似情況,比如給五個dom新增hover事件,理想效果是列印出當前索引,知識都是列印出最後乙個值。錯誤 var len 10 for...

setinterval 必報 閉包 定時器

一 什麼是閉包?有什麼作用 什麼是閉包 閉包是定義在乙個函式內部的函式,它可以訪問父級函式的內部變數。當乙個閉包被建立時,會關聯乙個作用域 父級函式的所有內部變數的集合,這個作用域不會在父級函式執行完後立即銷毀,而是永久儲存在記憶體中,直到這個閉包被銷毀,只有通過這個閉包可以訪問 操作這個記憶體中的...