编写一个可以被调用为函数的函数,该函数将返回一个函数,直到不存在任何参数,然后返回一个字符串。
console.log(say('my')('name')('is')('bob')()); => 'my name is bob.'
console.log(say('hello')('world')()); => 'hello world.'
答案 0 :(得分:2)
您可以使用返回匿名函数的函数。此匿名函数以递归方式调用原始函数以构建字符串,并在不提供任何参数的情况下将其返回。
function say (value){
return function (str){
return str === undefined ? (value + ".") : say(value + " " + str);
}
}
console.log(say('my')('name')('is')('bob')());
console.log(say('hello')('world')());
答案 1 :(得分:0)
您可以使用递归调用相同的函数。
function say(msg) {
if (msg.indexOf('undefined') == -1) {
return function(m) {
return say(msg + ' ' + m);//recursion
};
}
return msg.split(' ').slice(0, -1).join(' ');//remove last 'undefined'
}
console.log(say('my')('name')('is')('bob')()); //=> 'my name is bob.'
console.log(say('hello')('world')()); //=> 'hello world.'
答案 2 :(得分:0)
这是我想出的。
function say(a) {
let str = [];
function _say(s) {
if (s) {
str.push(s);
return _say;
}
return `${str.join(' ')}.`;
}
return _say(a);
}
console.log(say('my')('name')('is')('bob')());
console.log(say('hello')('world')());