js只返回一个函数名是什么意思
functiona(){vari=0;functionb(){alert(++i);}returnb;}这是百科上关于闭包的例子,为什么只是返回一个b啊!只返回一个函数值...
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
这是百科上关于闭包的例子,为什么只是返回一个b啊!只返回一个函数值是什么意思 展开
var i=0;
function b(){
alert(++i);
}
return b;
}
这是百科上关于闭包的例子,为什么只是返回一个b啊!只返回一个函数值是什么意思 展开
4个回答
展开全部
首先,这个例子是为了让你理解闭包,没有实际使用价值。其次,返回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
这个东西一般用在多态的处理上,根据外层的不同方法返回一个子方法以便下一步的操作。
例如function 获取一个周长算法(类型) {
switch(类型)
case '方': return function(l) {return 4*l;}
case '圆': return function(r) {return 3.14 * 2 * r;}
}
}
var 周长=(获取一个周长算法(方))(5);
周长得到20
展开全部
这是闭包的一种写法,当你调用a的时候会返回给你一个b的方法,比如 var c = a();这个c实际上就是b,每次调用c()的时候会把a里的i+1弹出来给你的,其实就是利用闭包实现一个不能被别人修改的局部变量,这个局部变量只能由b来修改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
返回一个b然后你就可以在外部调用内部的函数和变量了;ps:这里return b 你就可以再函数a的外面定义一个变量
var c=a();
var d=c();
c作为一个全局变量,访问了一个内部函数b
var c=a();
var d=c();
c作为一个全局变量,访问了一个内部函数b
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接调用!实际上js这么写还是很少见的
追问
我就是想问这样写代表什么,返回一个 函数名字,到底是返回了什么?
追答
根本就是错误的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询