JavaScript学习笔记:闭包

博客介绍了JavaScript中闭包作为作用域应用的特殊情况的两种表现。一是函数作为参数被传递,调用时从函数定义的全局作用域找变量值;二是函数作为返回值被返回,调用时从函数上级作用域找变量值,并分别说明了输出结果的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闭包是作用域应用的特殊情况,有两种表现:

1、函数作为参数被传递

function foo (fn) {
	let a = 1;
	fn();
}

let a = 2;
function fn () {
	console.log(a);
}

foo(fn);//2

此时输出为2的原因是:
调用fn函数时,从fn函数定义的作用域开始寻找a值,fn定义在全局作用域,而全局作用域声明了a的值为2,所以输出为2。

2、函数作为返回值被返回

function foo () {
	let a = 1;
	return function () {
		console.log(a);
	}
}

let test = foo();
let a = 2;
test();//1

此时输出1的原因是:
因为foo函数返回一个函数,所以调用test函数实际上就是调用foo返回的函数,那回到该函数定义的作用域开始寻找a值,该函数上级作用域即foo函数的作用域里声明a的值为1,所以输出为1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值