使用JavaScript的function加console.log(fn('苹果', '香蕉')('西红柿')); console.log(fn('苹果')('香蕉', '西红柿')); console.log(fn('苹果', '香蕉', '西红柿'));,在控制台输出,使用三种代码方法
时间: 2023-06-19 12:04:17 浏览: 214
方法一:
```javascript
function fn(...args1) {
return function (...args2) {
return [...args1, ...args2];
}
}
console.log(fn('苹果', '香蕉')('西红柿'));
console.log(fn('苹果')('香蕉', '西红柿'));
console.log(fn('苹果', '香蕉', '西红柿'));
```
方法二:
```javascript
function fn() {
let args1 = [...arguments];
return function () {
let args2 = [...arguments];
return [...args1, ...args2];
}
}
console.log(fn('苹果', '香蕉')('西红柿'));
console.log(fn('苹果')('香蕉', '西红柿'));
console.log(fn('苹果', '香蕉', '西红柿'));
```
方法三:
```javascript
const fn = (...args1) => (...args2) => [...args1, ...args2];
console.log(fn('苹果', '香蕉')('西红柿'));
console.log(fn('苹果')('香蕉', '西红柿'));
console.log(fn('苹果', '香蕉', '西红柿'));
```
相关问题
使用JavaScript的function加console.log(fn('苹果', '香蕉')('西红柿')()); console.log(fn('苹果')('香蕉', '西红柿')()); console.log(fn('苹果', '香蕉', '西红柿')());,使用三种代码方法
1. 使用普通函数定义方式:
```
function fn() {
var args = Array.prototype.slice.call(arguments);
return function() {
var newArgs = args.concat(Array.prototype.slice.call(arguments));
return newArgs.join(' ');
}
}
console.log(fn('苹果', '香蕉')('西红柿')());
console.log(fn('苹果')('香蕉', '西红柿')());
console.log(fn('苹果', '香蕉', '西红柿')());
```
2. 使用箭头函数定义方式:
```
const fn = (...args) => (...newArgs) => [...args, ...newArgs].join(' ');
console.log(fn('苹果', '香蕉')('西红柿')());
console.log(fn('苹果')('香蕉', '西红柿')());
console.log(fn('苹果', '香蕉', '西红柿')());
```
3. 使用类的方式定义:
```
class Fn {
constructor(...args) {
this.args = args;
}
callFn(...newArgs) {
return [...this.args, ...newArgs].join(' ');
}
}
const fn = (...args) => new Fn(...args);
console.log(fn('苹果', '香蕉').callFn('西红柿'));
console.log(fn('苹果').callFn('香蕉', '西红柿'));
console.log(fn('苹果', '香蕉', '西红柿').callFn());
```
使用JavaScript补全function fn(...data) { } console.log(fn('苹果', '香蕉')('西红柿')()); console.log(fn('苹果')('香蕉', '西红柿')()); console.log(fn('苹果', '香蕉', '西红柿')());补全这段代码
这段代码使用了函数柯里化(Currying)的方式来实现接收不定数量参数的函数。下面是补全后的代码:
```javascript
function fn(...data) {
return function(...args) {
if (args.length === 0) {
return data.join(',');
} else {
return fn(...data, ...args);
}
}
}
console.log(fn('苹果', '香蕉')('西红柿')()); // 输出 "苹果,香蕉,西红柿"
console.log(fn('苹果')('香蕉', '西红柿')()); // 输出 "苹果,香蕉,西红柿"
console.log(fn('苹果', '香蕉', '西红柿')()); // 输出 "苹果,香蕉,西红柿"
```
这里的 `...` 是展开运算符,它可以将数组或者类数组对象展开成一个个的参数传入函数中。这里使用了递归调用函数的方式来实现柯里化。函数 `fn` 接收任意数量的参数,并返回一个新的函数。新的函数也可以接收任意数量的参数,并且如果新的函数不传入参数,就会返回之前所有参数的字符串形式;如果传入参数,就会继续执行柯里化。
阅读全文