2017-04-15 4 views
1

結果の値は122です。乗数が指定されていなくても、自動的に入力の値が使用されますか?乗数演算子はx = x * yと同じだと思ったので、最初にxを指定する必要があります。Ja代入演算子を使用したJavascriptクロージャ

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

入力が3であるが、乗数は6である(パラメータ=隠された、隠された= mystery2、そのためのparam(6)...) –

+0

何乗数が指定されていなくても意味がありますか?それは 'param(6)'で '* 6 'と定義されています。 – str

+0

ああ、param(6)= hidden(3)(6)乗数は6だから、私はまだクロージャの概念を理解しようとしている:( –

答えて

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=? 

あなたはあなたのコードをeasifyできます

mystery=input=>multiplier=>(input+2)*multiplier*4; 
mystery3=param=>bonus=>param(6)+bonus; 
result=mystery3(mystery(3))(2); 
関連する問題