消除就地定义的函数作为参数?

时间:2016-03-24 01:34:54

标签: javascript function parameters

如何消除就地定义的函数作为参数? 如同,返回其两个参数的添加的函数应编码为命名函数,而另一个函数应编码为分配给变量的匿名函数。

var outputAreaRef = document.getElementById("outputArea");
var output = "";

function flexible(fOperation, operand1, operand2)
{
var result  = fOperation(operand1, operand2);

return result;
}

output += flexible(function(num1, num2) {return num1 + num2}, 3, 5) + "<br/>";
output += flexible(function(num1, num2) {return num1 * num2}, 3, 5) + "<br/>"; 

outputAreaRef.innerHTML = output;

2 个答案:

答案 0 :(得分:2)

如果我正确地理解了这个问题,那么你正在寻找类似的东西:

 var outputAreaRef = document.getElementById("outputArea");
 var output = "";

 function flexible(fOperation, operand1, operand2) {
     var result = fOperation(operand1, operand2);
     return result;
 }

 function sum(a, b) {
     return a + b;
 }

 output += flexible(sum, 3, 5) + "<br/>";
 output += flexible(function (num1, num2) {
     return num1 * num2
 }, 3, 5) + "<br/>";

 outputAreaRef.innerHTML = output;

请参阅https://jsfiddle.net/nwp1k93f/

此外,您还可以查看

注意

答案 1 :(得分:0)

只需像定义任何其他功能一样定义它们。您传递给其他函数的函数没有什么特别之处。它们经常被内联写的唯一原因是因为除了那个地方之外不需要它们,所以分别命名它们没什么意义。

// Named function
function add(num1, num2) {
    return num1 + num2;
}
// Anonymous function assigned to variable
var multiply = function(num1, num2) {
    return num1 * num2;
}

output += flexible(add, 3, 5);
output += flexibble(multiply, 3, 5);