2017-04-15 2 views
1

Der Wert von Ergebnis ist 122, auch wenn der Multiplikator nicht angegeben ist, nimmt es den Wert der Eingabe automatisch? Ich dachte, dass der Multiplikatoroperator der gleiche wie x = x * y ist, so dass x an erster Stelle angegeben werden muss.JavaScript-Verschlüsse mitJa Zuweisungsoperator

function mystery(input) { 
    var secret = 4; 
    input += 2; 
    function mystery2(multiplier) { 
    multiplier *= input; 
    return secret * multiplier; 
    } 
    return mystery2; 
} 

function mystery3(param) { 
    function mystery4(bonus) { 
    return param(6) + bonus; 
    } 
    return mystery4; 
} 

var hidden = mystery(3); 
var jumble = mystery3(hidden); 
var result = jumble(2); 
+0

Eingang 3, Multiplikator 6 (Param = verborgen, versteckt = mystery2 daher param (6) ...) –

+0

Was tun Du meinst mit "auch wenn der Multiplikator nicht angegeben ist"? Es ist * definiert als "6" in "param (6)". – str

+0

Ahh, also param (6) = versteckt (3) (6) so Multiplikator ist 6, ich versuche immer noch, das Konzept der Schließungen zu begreifen :( –

Antwort

0
function mystery(input) { 
    var secret = 4; 
    input += 2; 
    function mystery2(multiplier) { 
    multiplier *= input; 
    return secret * multiplier; 
    } 
    return mystery2; 
} 

function mystery3(param) { 
    function mystery4(bonus) { 
     return param(6) + bonus; 
    } 
    return mystery4; 
} 

var hidden = mystery(3); 
    //input=3 +=2 = 5 
    //hidden=mystery2 

var jumble = mystery3(hidden); 
//param=hidden 
//jumble=mystery4 

var result = jumble(2); 
    //bonus=2 
//result=jumble(2)=mystery4(2) 
//result=param(6)+bonus 
//result=mystery2(6)+2 
//multiplier=6 
//result=input*multiplier*secret+2 
//result=5*6*4+2 
//result=? 

könnten Sie Ihren Code easify:

mystery=input=>multiplier=>(input+2)*multiplier*4; 
mystery3=param=>bonus=>param(6)+bonus; 
result=mystery3(mystery(3))(2); 
Verwandte Themen