闭包与应用

闭包与应用

一、闭包

1.闭包是什么

Javascript允许使用内部函数——函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包

2.闭包的优缺点

  • 优点:在页面加载时闭包便已在内存中存在,因此调用的速度快;并且闭包的变量也会始终保存在内存中。

    因为闭包的变量被赋予给了一个全局变量,因为只有局部变量在使用完后被销毁,所以闭包的变量不会被销毁

  • 缺点:闭包会导致内存消耗过大,让页面性能降低;需要手动清空才能释放内存

2.闭包的表现形式

  • 函数的嵌套
    即在函数中声明新的函数,新声明的函数也被称嵌套函数
  • 递归
    一个函数有直接或间接调用了自己,这就是递归。递归的主要作用就是把原本复杂的问题,化为与相似但是更简单的问题。然后随着逐步的调用,问题也变得逐渐简单。
function f(a){
	if(a>0){
		return a+f(a-1);}
	else{
		return 0;}}
		f(10)

上面这个代码意思为1、2、3、4……10的和,f()通过调用自己来实现计算;若是将以上代码分解,便可得:

	f(10)=10+f(9)
	f(9)=10+9+f(8)
	f(8)=10+9+8+f(7)
	...
	f(1)=10+9+8+7+6+5+4+3+2+1+f(0)
	//因为此时a已经不大于0了,所以f(0)的返回值为0
  • 匿名函数
    匿名函数简单来说就是没有名字的函数。因为js中不允许不命名函数,所以需要用一个括号将整个函数包起来:
	(function (){
 	   console.log("123");
	};

匿名函数只有在调用时,才会创建函数对象和作用域对象。调用完后立即释放,节省内存。适合做回调函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值