我创建了一个回调函数并声明了一次。但它会做多项任务。我怎样才能做到这一点?
I create a callback function and declare one time. but it'll do multiple task. how can I do this?
function result (value_1, value_2, callback){
var plus = value_1 + value_2
var minus = value_1 - value_2
var multiplication = value_1 * value_2
var divided = value_1 / value_2
var output = callback(plus, minus, multiplication, divided)
return output
}
function plus (a, b) {
return a+b
}
function minus (a, b) {
return a-b
}
function multiply (a, b) {
return a*b
}
function divided (a, b) {
return a/b
}
var userOutput_1 = result(5, 8, plus)
var userOutput_2 = result(5, 8, minus)
var userOutput_3 = result(5, 8, multiply)
var userOutput_4 = result(5, 8, divided)
console.log(userOutput_1);
console.log(userOutput_2);
console.log(userOutput_3);
console.log(userOutput_4);
仔细看上面的代码.
你可以看到我写了一个函数叫result。它的value_1、value_2、回调这三个参数我都取过了。然后想求value_1和value_2的加减乘除。下面是作为回调参数参数的加法、减法、乘法和除法的单独函数。我声明特定于加法、减法、乘法、除法。但是我想传一个函数作为回调参数实参 where var userOutput_1 = .....;
var userOutput_2: ....
就不用多说了。 我可以用一个功能做所有事情。
您似乎在寻找
function result (value_1, value_2, callback) {
var output = callback(value_1, value_2);
return output;
}
这个函数当然是有点无意义了,调用者应该直接用操作调用函数。为了使其更有用并展示回调的好处,您可以这样做
function compute(value_1, value_2, operation) {
const name = operator.name;
const result = operation(value_1, value_2);
console.log(`${name}(${value_1}, ${value_2}) = ${result}`);
return result;
}
您可以传递一组回调:
function result(value_1, value_2, callbacks) {
return callbacks.map(callback => callback(value_1, value_2));
}
然后您可以使用解构赋值将结果解包到变量中:
const [userOutput_1, userOutput_2, userOutput_3, userOutput_4] = result(5, 8, [plus, minus, multiply, divided]);
您可以创建一个包装函数,该函数 returns 包含参数的闭包中的函数数组:
function result(value_1, value_2, callback) {
return callback(value_1, value_2).map(fn => fn())
}
function operation(a, b) {
return [
() => a + b,
() => a - b,
() => a * b,
() => a / b
]
}
const userOutput = result(5, 8, operation)
console.log(userOutput);
function result (value_1, value_2, callback){
var plus = value_1 + value_2
var minus = value_1 - value_2
var multiplication = value_1 * value_2
var divided = value_1 / value_2
var output = callback(plus, minus, multiplication, divided)
return output
}
function plus (a, b) {
return a+b
}
function minus (a, b) {
return a-b
}
function multiply (a, b) {
return a*b
}
function divided (a, b) {
return a/b
}
var userOutput_1 = result(5, 8, plus)
var userOutput_2 = result(5, 8, minus)
var userOutput_3 = result(5, 8, multiply)
var userOutput_4 = result(5, 8, divided)
console.log(userOutput_1);
console.log(userOutput_2);
console.log(userOutput_3);
console.log(userOutput_4);
仔细看上面的代码.
你可以看到我写了一个函数叫result。它的value_1、value_2、回调这三个参数我都取过了。然后想求value_1和value_2的加减乘除。下面是作为回调参数参数的加法、减法、乘法和除法的单独函数。我声明特定于加法、减法、乘法、除法。但是我想传一个函数作为回调参数实参 where var userOutput_1 = .....;
var userOutput_2: ....
就不用多说了。 我可以用一个功能做所有事情。
您似乎在寻找
function result (value_1, value_2, callback) {
var output = callback(value_1, value_2);
return output;
}
这个函数当然是有点无意义了,调用者应该直接用操作调用函数。为了使其更有用并展示回调的好处,您可以这样做
function compute(value_1, value_2, operation) {
const name = operator.name;
const result = operation(value_1, value_2);
console.log(`${name}(${value_1}, ${value_2}) = ${result}`);
return result;
}
您可以传递一组回调:
function result(value_1, value_2, callbacks) {
return callbacks.map(callback => callback(value_1, value_2));
}
然后您可以使用解构赋值将结果解包到变量中:
const [userOutput_1, userOutput_2, userOutput_3, userOutput_4] = result(5, 8, [plus, minus, multiply, divided]);
您可以创建一个包装函数,该函数 returns 包含参数的闭包中的函数数组:
function result(value_1, value_2, callback) {
return callback(value_1, value_2).map(fn => fn())
}
function operation(a, b) {
return [
() => a + b,
() => a - b,
() => a * b,
() => a / b
]
}
const userOutput = result(5, 8, operation)
console.log(userOutput);