html和JavaScript如下:
<script>
function a(k)
{
var i=0;
if(k==0)
{
function b()
{
alert(++i);
}
return b;
}
else
{
function c()
{
alert(++i);
}
return c;
}
}
var d=a(0);
var e=a(1);
</script>
<button onclick="d()">clickme</button>
<button onclick="e()">clickme2</button>
HTML和JavaScript在上面。
我先点击"clickeme"按钮,浏览器警报"1">;然后我点击按钮"clickme2",浏览器警报"1"。
为什么?
单击">clickme"按钮后,变量"i"已更改为1;然后,当我单击"clickme2"按钮时,浏览器应提醒"2"。为什么?
b(( 和 c(( 的局部函数有自己的变量 "i" 副本?
问题是你的变量是在 a(( 函数中定义和初始化的。
代码应更改为:
<script>
var i=0;
function a(k)
{
if(k==0)
{
function b()
{
alert(++i);
}
return b;
}
else
{
function c()
{
alert(++i);
}
return c;
}
}
var d=a(0);
var e=a(1);