您的位置:首页 > Web前端 > JavaScript

JS闭包原理及其使用场景解析

2020-12-09 04:07 1071 查看

闭包定义

可以通过内层函数访问外层函数的作用域的组合叫做闭包。

闭包使用场景

使用闭包来实现防抖

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)

使用闭包设计单例模式

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)
}

闭包性能

因为闭包会使外层函数作用域中的变量被保存在内存中不被回收,所以如果滥用闭包就会导致性能问题,谨记。

以上就是本文的全部内容,希望对大家的学习有所帮助

您可能感兴趣的文章:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JS 闭包