js只返回一个函数名是什么意思

functiona(){vari=0;functionb(){alert(++i);}returnb;}这是百科上关于闭包的例子,为什么只是返回一个b啊!只返回一个函数值... function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
这是百科上关于闭包的例子,为什么只是返回一个b啊!只返回一个函数值是什么意思
展开
 我来答
百度网友a19d193
2013-03-25 · TA获得超过3446个赞
知道大有可为答主
回答量:1464
采纳率:100%
帮助的人:1436万
展开全部
首先,这个例子是为了让你理解闭包,没有实际使用价值。其次,返回b不是返回函数值,而是返回了函数定义,你可以 var c = a();这个时候c就等于b了,你可以继续c();看到alert(1)
这个东西一般用在多态的处理上,根据外层的不同方法返回一个子方法以便下一步的操作。
例如function 获取一个周长算法(类型) {
switch(类型)
case '方': return function(l) {return 4*l;}

case '圆': return function(r) {return 3.14 * 2 * r;}

}
}
var 周长=(获取一个周长算法(方))(5);
周长得到20
zgh26782000
2013-03-24 · TA获得超过1453个赞
知道小有建树答主
回答量:788
采纳率:0%
帮助的人:495万
展开全部
这是闭包的一种写法,当你调用a的时候会返回给你一个b的方法,比如 var c = a();这个c实际上就是b,每次调用c()的时候会把a里的i+1弹出来给你的,其实就是利用闭包实现一个不能被别人修改的局部变量,这个局部变量只能由b来修改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
火力全开42
2013-03-25 · 超过13用户采纳过TA的回答
知道答主
回答量:54
采纳率:100%
帮助的人:36.4万
展开全部
返回一个b然后你就可以在外部调用内部的函数和变量了;ps:这里return b 你就可以再函数a的外面定义一个变量
var c=a();
var d=c();
c作为一个全局变量,访问了一个内部函数b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
happy2012zjh
2013-03-24 · TA获得超过273个赞
知道小有建树答主
回答量:1197
采纳率:100%
帮助的人:514万
展开全部
直接调用!实际上js这么写还是很少见的
追问
我就是想问这样写代表什么,返回一个 函数名字,到底是返回了什么?
追答
根本就是错误的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式