-3

在不更改此功能的情况下:

function operate(operator, operand1, operand2) {
    return operator(operand1, operand2);
}

我想写出:

var x = operator(add, operate(add, 2, 3), operate(multiply, 4, 5));

并得到 25 作为 x 的值。我怎样才能做到这一点?

4

3 回答 3

3

你有一个错字,operator应该operate在:

var x = operate(add, operate(add, 2, 3), operate(multiply, 4, 5));

然后,您需要定义addmultiply成为 2 个函数,每个函数接受 2 个参数并返回 2 个参数的结果并执行适当的操作。

于 2012-12-08T04:31:53.907 回答
2

原因是它operator应该是一个函数,但执行需要add并被multiply定义为:

function add(x,y) {
    return x + y;
}

function multiply(x,y) {
    return x * y;
}

另外,我认为有一个错字:

ReferenceError: operator is not defined

我会:

var x = operate(add, operate(add, 2, 3), operate(multiply, 4, 5));

这给了x = 25.

于 2012-12-08T04:32:31.847 回答
0

在这里,您可以创建两个以运算符命名的函数,您正在使用“add”和“multiply”,因为 javascipt 允许函数传入参数,您的问题就解决了

function add(x,y) {
    return x + y;
}

function multiply(x,y) {
    return x * y;
}

PS:这里有一个错字“var x = operator(add,operate(add, 2, 3),operate(multiply, 4, 5));" 这里的操作员是操作。

于 2012-12-08T04:39:45.090 回答