执行 c() 函数时,为何是2呢?此时 c函数就是b函数呀?
1. B函数是嵌套函数呀,为何在外部也能调用呢?
2. 就算能调用,结果为何是2呢?
<HTML>
<HEAD>
<script type="text/javascript">
function a(){
var i=0;
function b(){
alert("inner:"+ (++i));
}
b();
alert("outer:" + i);
return b;
} </script>
</HEAD> <BODY>
<script type="text/javascript">
var c = a(); //执行下一行代码,为何是2呢?此时 c函数就是b函数呀?
//1. B函数是嵌套函数呀,为何在外部也能调用呢?
//2. 就算能调用,结果为何是2呢?
c();
</script>
</BODY>
</HTML>
解决方案 »
- 谁能帮我封装一下这个js方法
- 求助extJS+DWR分页问题,错误出在dwr没能调用到后台的方法
- var s="^\d{2}\/((0?[1-9])|(1[0-2]))\/((3[0,1])|([1,2][0-9])|(0?[1-9]))$";var re = new RegExp(s);alert(re.test("01/1/1"));的问题
- 求jsp骨灰级玩家答疑!!!!!!!!!!!!!!!!!
- 跪求“超链接点击后加粗显示”代码……
- 一个函数式中的if失常
- 用javaScript如何动态刷新风格
- 怎样判断焦点(focus)是否在一个控件上?
- 鼠标点击问题
- 请问这个加密的PHP文件,如何解密啊,有高手愿意帮忙看看吗?
- jQuery中如何实现列表顺序的改变?
- 参数传递问题,在线等同仁解释
<HTML>
<HEAD>
<script type="text/javascript">
function a(){
var i=0;
function b(){
alert("inner:"+ (++i));
}
b();
alert("outer:" + i);
return b;
} </script>
</HEAD> <BODY>
<script type="text/javascript">
var c = a(); //执行下一行代码,为何是2呢?此时 c函数就是b函数呀?
//1. B函数是嵌套函数呀,为何在外部也能调用呢?
//2. 就算能调用,结果为何是2呢?
c();
</script>
</BODY>
</HTML>
//1. B函数是嵌套函数呀,为何在外部也能调用呢? c=b了啊
//2. 就算能调用,结果为何是2呢? 因为B函数是嵌套函数呀!闭包了啊!
//1. B函数是嵌套函数呀,为何在外部也能调用呢?// var c = a();这是函数a会运行一次,而且i的值会发生变化,i已经变成1,
//2. 就算能调用,结果为何是2呢?//c();调用函数b,++i,输出i就是2了。函数b是一个闭包。
看看闭包方面的内容http://stackoverflow.com/questions/111102/how-do-javascript-closures-work