2016-03-29 8 views
0

Ich bin ziemlich verblüfft über diese Frage, die ich für meine Interviewvorbereitung stieß. Er will mich in der Lage sein, eine Funktion mehrfach aufgerufen zu schreiben, die in den Parametern in diesem planlos nimmt:Versucht, eine Funktion zu verstehen, die zwei Eingänge für Parameter in JS hat (wie in FunktionX (Param1) (Param2))

multiply(5)(6); 

Ich habe versucht, einen Rückruf zu schreiben und dann diese in der return-Anweisung beziehen, aber es war nicht koscher.

function multiply(function(value){ 
return this * value; 
}); 
} 

Benötigt dieses Problem Rekursion?

Danke!

Antwort

2

Wenn Sie Ihre Funktion in dieser multiply(5)(6); Weise nennen,

Dann müssen Sie für Funktion currying gesucht werden. Und das kann erreicht werden durch,

function multiply(a){ 
return function(b){ 
    return b * a; 
} 
} 

//your way 
console.log(multiply(2)(2)) //4 

//The standard way 
var multiplyBy5 = multiply(5); 
var res = multiplyBy5(3); 
console.log(res); // 15; 

var multiplyBy10 = multiply(10); 
var res = multiplyBy5(3); 
console.log(res); // 30; 
+0

Vielen Dank. Das macht Sinn – Jon

+0

@Jon Froh zu helfen! :) Versuchen Sie, das Häkchen in dieser Antwort zu drücken, wenn Sie denken, dass diese Antwort Ihnen geholfen hat. Und das ist kein Zwang. :) –