javascript中返回函数和返回函数名有什么区别?

1:以下返回的是函数名:functionfoo(x,y){vartmp=3;functionbar()//创建普通函数{alert(x+y+(++tmp));}retur... 1:以下返回的是函数名:
function foo(x,y) {
var tmp = 3;
function bar() //创建普通函数
{
alert(x + y + (++tmp));
}
return bar(); //返回函数名
}
var ff = foo(2,10);//这边为什么是直接调用函数,然后输出16;而不是获取函数,以待需要调用的时候调用:,为什么?
2:以下返回的是函数:
function foo(x,y) {
var tmp = 3;
return function() //返回匿名函数
{
alert(x + y + (++tmp));
}
}
var ff = foo(2,10);//这边是获取函数,以待需要调用的时候调用,不会输出16;和上面的返回函数名有什么区别?
展开
 我来答
落叶l无情
2015-08-06 · TA获得超过1417个赞
知道大有可为答主
回答量:1372
采纳率:0%
帮助的人:1415万
展开全部
第一个情况,return bar(); 就是 运行 bar(),然后将 bar()的返回值再作为foo的返回值,当你调用 foo(2,10)的时候,将会运行 bar(),即弹出16。
第二种情况,将一个函数作为返回值,所以var ff = foo(2,10); ff就是那个匿名函数,你可以 ff(); 试试 ,看看是不是弹出16.
猜想, 如果 将第一种情况 return bar(); 改成 return bar; 可能就跟第二种情况一样了,这才是返回函数名,没测试过,不知道是否可以这样。
追问
你说得对,将return bar(),改成return bar,是和第二种情况一样,但不是你说的那种情况,就是返回函数名!是和返回函数一样(return function(){.....});
qq4014
2015-08-06 · TA获得超过435个赞
知道小有建树答主
回答量:689
采纳率:60%
帮助的人:176万
展开全部
return bar(); //返回函数名
这不是返回函数名,是返回bar函数的执行结果, 应该把括号去掉。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式