在JavaScript中,函數(shù)的功能十分強大。它們是第一類對象,也可以作為另一個對象的方法,還可以作為參數(shù)傳入另一個函數(shù),不僅如此,還能被一個函數(shù)返回!可以說,在JS中,函數(shù)無處不在,無所不能,堪比孫猴子呀!當(dāng)你運用好函數(shù)時,它能助你取西經(jīng),讓代碼變得優(yōu)雅簡潔,運用不好時,那就遭殃了,要大鬧天宮咯~
除了函數(shù)相關(guān)的基礎(chǔ)知識外,掌握一些高級函數(shù)并應(yīng)用起來,不僅能讓JS代碼看起來更為精簡,還可以提升性能。以下是博主總結(jié)的一些常用的、重要的高級函數(shù),加上了一些個人見解,特此記錄下來。如果您是JS初學(xué)者,也不要被“高級”兩個字嚇到,因為文中穿插講解了一些原型、this等基礎(chǔ)知識,相信并不難理解。如果您是JS大牛,也可以把本文用來查漏補缺。
瀏覽器的 resize、scroll、keypress、mousemove 等事件在觸發(fā)時,會不斷地調(diào)用綁定在事件上的回調(diào)函數(shù),極大地浪費資源,降低前端性能。為了優(yōu)化體驗,需要對這類事件進行調(diào)用次數(shù)的限制。
作用是在短時間內(nèi)多次觸發(fā)同一個函數(shù),只執(zhí)行最后一次,或者只在開始時執(zhí)行。
以用戶拖拽改變窗口大小,觸發(fā) resize 事件為例,在這過程中窗口的大小一直在改變,所以如果我們在 resize 事件中綁定函數(shù),這個函數(shù)將會一直觸發(fā),而這種情況大多數(shù)情況下是無意義的,還會造成資源的大量浪費。
節(jié)流是指在一段時間內(nèi)只允許函數(shù)執(zhí)行一次
應(yīng)用場景如: 輸入框的聯(lián)想、可以限定用戶在輸入時,只在每兩秒鐘響應(yīng)一次聯(lián)想(或是兩秒鐘發(fā)送一次搜索請求)