函数防抖、节流、柯里化

本文介绍了JavaScript中的函数优化技术,包括节流在页面滚动加载时的应用,防止频繁触发;防抖确保在操作完成后再执行,如搜索框输入验证;以及函数柯里化,将多参函数转化为单参函数的链式调用,提高代码复用性。
摘要由CSDN通过智能技术生成

节流:隔一段时间触发一次,场景页面滚动加载

function throttle(fn,wait){
	let lastTime = 0;
	return function (...args){
		let now = new Date();
		if(now-lastTime>wait){
			lastTime=now;
		 	fn.apply(this,args);
		}
	}
}

防抖:完成后再发送请求,最后一个人说了算,只认最后一次,搜索框搜索输入,手机号、邮箱验证输入检测

function debound(fn,wait){
	let timer;
	return function(...args){
		if(timer) clearTimeout(timer);
		timer = setTimeout(()=>{
			fn.apply(this,args);
		},wait)
	}
}

函数柯里化:通过把一个多参函数转换成一系列嵌套的函数,每个函数一次接受一个参数。

let _fn = curry(function(a,b,c,d,e){
    console.log(a + b + c + d + e) 
});
_fn(1,2,3,4,5);    //15
_fn(1)(2)(3,4,5);  //15
_fn(1,2)(3,4)(5);  //15
_fn(1)(2)(3)(4)(5);  //15
function curry(fn,len=fn.length){
	return _curry.call(this,fn,len);
}
function _curry(fn,len,...args){
	return function (...params){
		let _args=[...agrs,...params];
		if(_args.length>len){
			return fn.apply(this,_args);
		}else{
			return _curry(this,fn,len,..._args);
		}
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 包的原理是将多个功能相近或关联的代码文件打包成一个单独的文件,以便于开发者进行维护和使用。包的特点包括:可重用性高、可扩展性强、可维护性更易于管理、可移植性更强。应用场景包括前端开发、后端开发和移动应用程序开发等领域。携带的关键字包括外部变量接收、私有变量、变量生命周期延长、变量全局污染、内存溢出、防抖节流函数柯理化。 ### 回答2: 包是一种将一组相关的变量、函数和对象封装在一起的编程概念。包的主要特点是通过使用外部变量接收和私有变量来实现对封装内容的访问控制,从而避免变量的全局污染和延长变量的生命周期。 外部变量接收是指在包中声明一个外部变量,在包外部通过调用包中的函数或方法来访问和修改该变量的值。这样可以实现对变量的保护,限制对变量的直接访问。 私有变量是指在包内部声明的只能在包内部访问的变量。通过将变量声明为私有变量,可以防止外部代码对其进行直接访问和修改,从而保护变量的安全性和可靠性。 包的应用场景主要是在大型项目或多人协作的开发过程中,用于将相关的功能模块封装起来,提高代码的可维护性和复用性。通过包的封装,可以隐藏内部实现细节,提供简洁的接口供其他代码使用。 包的封装还可以避免变量的全局污染问题。全局污染是指变量由于被定义在全局作用域中,可能会被其他代码修改或覆盖。通过封装在包中,变量的作用域被限制在包内部,从而避免了全局污染的问题。 此外,包的封装还可以帮助延长变量的生命周期。在包外部定义的变量可能在其作用域结束后被销毁,而通过包的封装,变量的生命周期可以被延长,可以在不同的函数或方法之间共享和持久化使用。 最后,包的封装还可以用于防止内存溢出等问题,防抖节流函数柯里化是包的常见应用之一。防抖节流是对事件处理和函数执行频率进行控制的机制,通过包的封装实现,可以避免频繁触发事件或函数执行时出现内存溢出等问题。函数柯里化是将多参数函数转化为多个单参数函数的过程,可以提高函数的灵活性和复用性。通过包的封装,可以方便地对函数进行柯里化操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值