JavaScript闭包

javascript中的闭包是一种函数的高级应用
一、函数的作用域
在了解闭包之前,我们必须知道什么是函数的作用域。
函数的作用域可以分为定义作用域和执行作用域。
函数在定义时,存在一个位置,就是当前函数的定义作用域,
函数在执行时,存在一个位置,就是当前函数的执行作用域

function fn(){
	console.log(2);
}
fn();	//此时,函数fn的定义作用域和执行作用域都是全局作用域
function abc(){
	fn();	//	此时,函数fn的定义作用域仍是全局作用域,但是它的执行作用域变成了函数abc的局部作用域
}

函数在执行时,可以拿到当前函数所在定义作用域中的所有数据
二、闭包

function fn(){
	var a=1;
	a++;
	console.log(a);
}
fn();	// 2
fn();	//不管执行多少次,此时fn的执行结果始终是2。因为变量a在函数执行时被创建,在执行结束后被删除,重复执行函数就意味着重复创建删除变量a

那如何能够实现变量a自增的效果呢?

function fn(){
	var a=1;
	function abc(){
		a++;
		console.log(a);
	}
	return abc;
}
var res=fn();
res();	//2
res();	//3,多次执行就会实现累加效果

以上代码就是一个简单地闭包,简单来说,闭包就是能够读取其他函数内部变量的函数。

闭包的形成必须具备以下三个条件:
1.函数的嵌套
2.内部函数使用外部函数的变量
3.将内部函数返回,在外部函数的外部,执行返回的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值