一、核心思想:
1.防抖
事件触发后开启一个定时器,如果事件在这个定时器限定的时间内再次触发,则清除定时器,在写一个定时器,定时时间到则触发。简单理解防抖是让函数在延迟时间到达后触发,如果期间再次点击则延迟重新计算,直到延迟时间为0后函数触发。
2.节流
设计一种类似控制阀门一样定期开放的函数,事件触发时让函数执行一次,然后关闭这个阀门,过了一段时间后再将这个阀门打开,再次触发事件。简单理解节流就是延迟时间内只触发一次。
3.函数柯里化
函数柯里化 其实就是函数颗粒化 将一个函数变成一个个颗粒可以组装,就是这个里面的多个参数 将他变成一个个的函数来传递这个参数。
ps:
三者原理都基于闭包,下面简单写下闭包的相关知识
1.概念:
闭包是函数嵌套函数,内部函数可以引用外部函数的参数和变量。参数和变量不会被垃圾回收机制收回。
2.从全局变量和局部变量出发:
(1)闭包拥有全局变量的不被释放的特点。(2)闭包拥有局部变量的无法被外部访问的特点
3.闭包的好处:
(1)可以让一个变量长期在内存中不被释放
(2)避免全局变量的污染,和全局变量不同,闭包中的变量无法被外部使用
(3)私有成员的存在,无法被外部调用,只能直接内部调用
二、代码实现:
1.防抖
<body>
手写防抖<input type="text" id="input1">
</body>
let input1 = document.getElementById("input1");
/**
* 手写防抖函数
* @param {Function} 传入方法
* @param {number} 延迟时间
* @return {Function} 返回方法
*/
function debounce(fn, delay) {
let time

本文介绍了JavaScript中的防抖、节流和函数柯里化三种常见技术,它们均基于闭包原理。防抖和节流分别通过设定延时限制函数触发次数,而函数柯里化则是将函数分解以便于参数传递。作者还提供了对应的代码实现示例。
最低0.47元/天 解锁文章
1583

被折叠的 条评论
为什么被折叠?



