js基础知识——函数的节流防抖
一、自执行函数
- 自执行函数需要在函数最前边添加一个分号(;),用于和上一行代码起到一个分割作用,
- 用()将普通函数内容包裹起来,并在后面再加一个括号(),用来写实参
function fn () {
console.log('普通函数fn')
}
fn ()
;(function fn (num) {
console.log('普通函数fn',num)
})(666)
二、函数的节流
- 事件在执行时,第一次开始执行时,在结束之前或在指定时间之前,无法触发下一次,除非等到第一次执行结束或在指定时间到达后,才可以进行下一次
inp.oninput =function () {
console.log(this.value)
}
let flag = true
inp.oninput = function () {
if (flag === false) return
flag = false
setTimeout(() => {
flag = true
console.log(this.value)
},300)
}
inp.oninput = (function(flag){
return function () {
if (flag === false) return
flag = false
setTimeout(() => {
flag = true
console.log(this.value)
},300)
}
})(true)
三、函数的防抖
- 事件在开始执行时,如果快速触发了第二次,那么第二次会取代第一次,只会执行最后一次
let timer = 0
inp.oninput = function(){
clearTimeout(timer)
timer = setTimeout(() => {
console.log(this.value)
},300)
}
inp.oninput = (function (timer){
return function () {
clearTimeout(timer)
timer = setTimeout(() => {
console.log(this.value)
},300)
}
})(0)