前两天遇到一个 闭包+递归 的问题,今天仔细想了下,特此记录。
实现这样一个函数 go:输入、输出分别如下:
go('l'); //输出 "gol"
go()('l'); //输出 "gool"
go()()('l'); //输出 "goool"
go()()()('l'); //输出 "gooool"
...
go()...()('l'); //输出 "goo...ol"
我的实现方法:
function go(_s) {
var base = 'go';
var b = function(_s) {
if(_s) {
base += _s;
return base;
}
base += 'o';
return b;
}
return b(_s);
}
测试结果:
大家有其他实现方法的,欢迎交流沟通~~