使用JavaScript的三种方法补全function fn(...data) { } console.log(fn('苹果', '香蕉')('西红柿')()); console.log(fn('苹果')('香蕉', '西红柿')()); console.log(fn('苹果', '香蕉', '西红柿')());补全这段代码,并在控制台打印三次:我喜欢,苹果,香蕉,西红柿
时间: 2023-06-16 19:08:35 浏览: 44
以下是使用JavaScript的三种方法补全代码:
方法一:使用闭包和递归
```
function fn(...data) {
let str = '我喜欢';
function inner(...args) {
if (args.length > 0) {
str += ',' + args[0];
return inner.bind(null, ...args.slice(1));
} else {
return function() {
console.log(str);
}
}
}
return inner(...data);
}
console.log(fn('苹果', '香蕉')('西红柿')());
console.log(fn('苹果')('香蕉', '西红柿')());
console.log(fn('苹果', '香蕉', '西红柿')());
```
方法二:使用reduce函数
```
function fn(...data) {
return (...args) => {
const arr = [...data, ...args];
const str = arr.reduce((prev, curr) => prev + ',' + curr, '我喜欢');
return () => console.log(str);
}
}
console.log(fn('苹果', '香蕉')('西红柿')());
console.log(fn('苹果')('香蕉', '西红柿')());
console.log(fn('苹果', '香蕉', '西红柿')());
```
方法三:使用模板字符串和箭头函数
```
function fn(...data) {
return (...args) => () => console.log(`我喜欢,${[...data, ...args].join(',')}`);
}
console.log(fn('苹果', '香蕉')('西红柿')());
console.log(fn('苹果')('香蕉', '西红柿')());
console.log(fn('苹果', '香蕉', '西红柿')());
```