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