闭包
- 指有权访问另一个函数作用域中的变量的函数
- 个人理解,变量主要在一个函数(多次被调用)中使用时,闭包一定程度上避免了全局变量的使用 eg. 如下面代码中的timer、valid
防抖
规定时间内多次触发同一个事件,以最后一次为准只响应一次
function debounce(fn, delay) {
let timer = null
return function (params) {
if(timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn(params)
}, delay);
}
}
function scrollPrint(val) {
console.log(val)
}
document.onscroll = debounce(() => {scrollPrint('kkk')}, 4000)
节流
执行一次操作后,规定时间内再次执行无效
function throttle(fn, delay) {
let valid = true
return function (params) {
if (valid) {
fn(params)
valid = false
setTimeout(() => {
valid = true
}, delay);
}
}
}
function scrollPrint(val) {
console.log(val)
}
document.onscroll = throttle(() => {scrollPrint('kkk')}, 4000)