闭包里面的函数调用时发生了什么

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>闭包里面的函数调用时发生了什么</title>
</head>
<body>
 


<script>
function creatCompareFunction (propertyName) {
return function(object1,object2) {
var value1 = object1[propertyName];
var value2 = object2[propertyName];
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
};
}
//调用creatCompareFunction函数。
var compare = creatCompareFunction ('name');
//此时返回的是一个匿名函数,并将其赋值给变量compare
//这个函数调用时:创建执行环境1,产生作用链1,
//0级是活动对象里面包含arguments和name形参。
//1级是外部函数对象(全局):
//creatCompareFunction指向执行环境,和result(此时未定义)。
var result = compare({name: 'AAA'},{name: 'BBB'}); //调用匿名函数
//匿名函数调用时:创建执行环境2,产生作用域链2,
//0级是活动对象里面包含arguments和object1、object2形参。
//1级是其外部函数的活动对象:creatCompareFunction的活动对象。
//2级是其外部函数的外部函数活动对象:全局。
compare = null;
//解除匿名函数的引用,就相当于通知垃圾回收机制将其清除。
//一旦匿名函数的作用域链被销毁,那么其他的作用域被销毁(除了全局。)
 
</script>
</body>
</html>

转载于:https://www.cnblogs.com/zy-skl/p/10928279.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值