如何消除就地定义的函数作为参数? 如同,返回其两个参数的添加的函数应编码为命名函数,而另一个函数应编码为分配给变量的匿名函数。
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;
答案 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);