cAng^Er

不懂我的人 , 离不了我 , 该了解了解我 !而懂我的人 , 更离不了我 , 因为他们爱我 。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  30 随笔 :: 16 文章 :: 18 评论 :: 0 Trackbacks

高手绕道!这跟闭包本身没什么大的关系,也不知道怎么取标题,随便凑了个数,望见谅!

今天一个刚学js的朋友给了我一段代码问为什么方法不执行,代码如下:

1 function  makefunc(x)  {
2         return function (){
3             return  x;
4         }
5     }
6 alert(makefunc(0));

其实不是不执行,只是朋友的意思这里alert出来的应该是“0”,而不是function (){return x;}。
不是脚本写错了,只是没搞懂return,从当前函数退出,并从那个函数返回一个值。如果返回的是一个函数,那么返回的也是函数本身。
可以这样修改上面的代码,就是alert(makefunc(0)()):

1 function  makefunc(x)  {
2         return (function (){
3             return  x;
4         })();
5     }
6 alert(makefunc(0)());

如果要返回函数执行的结果那么首先要让这个函数执行,例如:

1 function  makefunc(x)  {
2         return (function (){
3             return  x;
4         })();
5     }
6 alert(makefunc(0));

这里有一个匿名函数,

1 (function (){
2            return  x;
3        })();

在第一个括号内是匿名函数,第二个括号用于调用该匿名函数,您可以在第二个括号中传入所需的参数。例如:

1 (function( x , y){
2     alert( x + y);
3 })(2 ,3 );

声明: 本文采用 BY-NC-SA 协议进行授权 | WEB前端开发
转载请注明转自《return闭包函数

posted on 2011-06-15 17:56 cAng^Er 阅读(294) 评论(0)  编辑  收藏 所属分类: |:Web View:|

只有注册用户登录后才能发表评论。


网站导航: