每日进步一点点
【经典题】
下面的代码运行结果是什么?为什么?
<script>
var a = 0,
b = 0;
function A (a){
A = function (b) {
alert(a + b++);
}
alert(a++);
}
A(1);
A(2);
<script>
结果为 1 4
解析:
1:考点:
2.在第一次调用A函数的时候,A函数被重新赋值为了function(b)…;
3.alert输出a之后,a的值加1,此时需要注意,在初始的A当中,形参a其实是一个局部变量,当重置A函数的时候,新函数A调用了原函数A作用域中的局部变量a,构成了闭包,这个局部变量a被保存。
学习要点滴积累,记得要坚持哦!