新人学习闭包时碰到的问题
新人,刚刚在学习js。
刚刚自己写了一段代码
<script type="application/javascript">
function a()
{
var c=1;
var d=5;
b();
function b()
{
a=function()
{return d;}
}
return [c,b];
}
alert(a()[0]);
alert(a());
</script>
系统分别显示1,5。到这里很正常,我基本可以理解。但是我把代码稍稍改了一下之后就发生了一些我不大能理解的变化了。
第一次改动
<script type="application/javascript">
c=function b()
{
function a()
{
b=function b()
{return 2;}
}
a();
return 1;
}
alert(c());
alert(c());
</script>
只是将function b赋值给了变量C,return的值就都是1了,请问为什么?
第二次改动
<script type='text/javascript'>
function a()
{
var c=1;
var d=2;
function b()
{return c;}
function f()
{
b=function ()
{return d; }
}
var e=[b,f];
return e;
}
var b=a()[0];
var f=a()[1];
alert(b());
f();
alert(b())
</script>
这次我改动的对象不再是函数本身,而是函数内部的函数。为什么两次的值都是1?