2016-03-24 2 views
0

Wie beseitige ich Funktionen, die als Parameter definiert sind? Wie in, sollte die Funktion, die die Addition ihrer zwei Parameter zurückgibt, als eine benannte Funktion codiert werden und die andere Funktion sollte als eine anonyme Funktion, die einer Variablen zugewiesen ist, codiert werden.Funktionen eliminieren, die als Parameter definiert sind?

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

Warum möchten Sie das tun? Und welches Problem hast du damit? – Bergi

+0

Sie sollten Funktionsdeklarationen nicht mit variablen Initialisierungen mischen. – Bergi

Antwort

2

Wenn ich die Frage richtig verstanden Sie suchen so etwas wie:

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; 

siehe https://jsfiddle.net/nwp1k93f/

Darüber hinaus können Sie auch einen Blick auf

Hinweis:

0

Definieren Sie sie einfach so, wie Sie möchten er funktioniert. Funktionen, die Sie an andere Funktionen übergeben, sind nicht besonders. Der einzige Grund, warum sie oft inline geschrieben werden, ist, dass sie außer an diesem einen Ort nicht benötigt werden, so dass es wenig Sinn macht, sie separat zu benennen.

// 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);