JS閉包原理及其使用場景解析
閉包定義
可以通過內(nèi)層函數(shù)訪問外層函數(shù)的作用域的組合叫做閉包。
閉包使用場景
使用閉包來實現(xiàn)防抖
function debounce(callback, time) {
var timer;
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
callback()
}, time)
}
}<br data-filtered="filtered"><br data-filtered="filtered">window.onresize = debounce(() => {console.log(666)},500)
使用閉包設(shè)計單例模式
class Car{
constructor(color){
this.color = color
}
}
var proxy = (function createCar() {
var instance;
return function (color) {
if (!instance) {
instance = new Car(color)
}
return instance
}
})()
var car = proxy('white')
使用閉包遍歷取索引值(古老的問題)
for (var i = 0; i < 10; i++) {
setTimeout(function(){console.log(i)},0) //10個10
}
for (var i = 0; i < 10; i++) {
(function(j){
setTimeout(function(){console.log(j)},0) // 0 - 9
})(i)
}
閉包性能
因為閉包會使外層函數(shù)作用域中的變量被保存在內(nèi)存中不被回收,所以如果濫用閉包就會導(dǎo)致性能問題,謹(jǐn)記。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js輸出數(shù)據(jù)精確到小數(shù)點后n位代碼
要保留小數(shù)點后N位的問題,經(jīng)過一番思索,終于解決了,這篇文章主要介紹了js輸出數(shù)據(jù)精確到小數(shù)點后n位代碼,感興趣的朋友可以參考一下2016-07-07
JavaScript使用indexOf()實現(xiàn)數(shù)組去重的方法分析
這篇文章主要介紹了JavaScript使用indexOf()實現(xiàn)數(shù)組去重的方法,結(jié)合實例形式分析了使用indexOf()方法進行數(shù)組的判斷與去重相關(guān)原理與具體操作技巧,需要的朋友可以參考下2018-09-09
JavaScript-定時器0~9抽獎系統(tǒng)詳解(代碼)
這篇文章主要介紹了 JavaScript-定時器0~9抽獎系統(tǒng),通過代碼實例說明函數(shù)調(diào)用的整體操作,具體步驟大家可查看下文的詳細講解,感興趣的小伙伴們可以參考一下。2017-08-08
JavaScript設(shè)計模式之工廠模式和構(gòu)造器模式
這篇文章主要介紹了JavaScript設(shè)計模式之工廠模式和構(gòu)造器模式,本文同時講解了設(shè)計模式的類別如創(chuàng)建型設(shè)計模式、結(jié)構(gòu)型設(shè)計模式、行為設(shè)計模式等內(nèi)容,需要的朋友可以參考下2015-02-02
JavaScript this關(guān)鍵字指向常用情況解析
這篇文章主要介紹了JavaScript this關(guān)鍵字指向常用情況解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09

