如果这样调用的话,为什么结果是相同的?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
function f1(){
var n=999;
nAdd=function(){
n=n+1;
}
function f2(){
alert(n);
}
return f2;
}
var rs=f1();
f1()();
nAdd();
rs();
nAdd();
rs();
</script>
</body>
</html>
7
收起
正在回答
2回答
你好同学,解答如下:
1.第一个理解正确。
2.。第二个是说如下调用对吗?
描述的有一点问题。老师给你理一下:
并不是n被重置,这样调用后,产生3个闭包,每个闭包之间独立,每一个闭包中都会有自己的n值。nAdd执行时,第一个闭包的nAdd被覆盖,变成第二闭包的nAdd了,所以nAdd改变的是第二个闭包的值。参考如下:
祝学习愉快,望采纳。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星