return闭包函数

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

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

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

如果要返回函数执行的结果那么首先要让这个函数执行,例如:
[code=”javascript”]
function makefunc(x) {
return (function (){
return x;
})();
}
alert(makefunc(0));
[/code]
这里有一个匿名函数,
[code=”javascript”]
(function (){
return x;
})();
[/code]
在第一个括号内是匿名函数,第二个括号用于调用该匿名函数,您可以在第二个括号中传入所需的参数。例如:
[code=”javascript”]
(function( x , y){
alert( x + y);
})(2 ,3 );
[/code]

赞(0) 打赏
未经允许不得转载:WEB前端开发 » return闭包函数

评论 7

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #-49

    学习了 厉害呀!
    以前一直搞不懂那么多()是什么意思,
    现在知道了。

    王道中强流8年前 (2011-06-12)回复
  2. #-48

    路过,并学习了,最后表示感谢:)
    如果有兴趣,加24810664群一起交流。

    deeka8年前 (2011-06-13)回复
  3. #-47

    jquery的开头就是这样的将window和undefined传入匿名函数的闭包中
    (function(widnow,undefined){
    //。。。
    })(window);

    第二段代码有点笔误吧,makefunc函数体部分第一个return部分返回的就是个非自动执行函数吧,没有后面的()吧,你此处强调的是makefunc(0)()的执行吧

    qiqiboy8年前 (2011-06-13)回复
  4. #-46

    嗯,这招也是从jQuery学来的,发现还是很好用的,能缩短很多代码量

    老板俩馒头8年前 (2011-06-16)回复
  5. #-45

    只是扩展关键词: 函数变换,函数包装。

    guangwong8年前 (2011-06-18)回复
  6. #-44

    受教了。

    towry8年前 (2011-06-18)回复
  7. #-43

    老是觉的闭包很难!唉!

    ethan8年前 (2011-07-03)回复

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏