问题详情
完善一个函数 functionFunction,并实现链式调用:functionFunction(“a”,“b”)(“c”)(“d”),返回一个函数,函数转换为字符串类型是拼接的字符串:“a, b, c, d”;
答案
function functionFunction() {
let string = ""; //高阶函数的内部变量
string = Array.prototype.slice.call(arguments,0).join(", ");
let fn = function(){
string = [string,Array.prototype.slice.call(arguments,0).join(', ')].join(", ");
return fn;
}
fn.toString=function(){
return string;
}
return fn;
}
扩展
链式调用不仅仅可以进行字符串的拼接,还可以进行很多操作。因为封装成了高阶函数,函数拥有自己的私有变量,每次调用都会改变私有变量。最后以闭包的形式把私有变量返回。