2017-04-15 65 views
1

结果值为122,即使未指定乘数,它是否会自动输入输入值?我认为乘数运算符与x = x * y相同,因此需要首先指定x。Javascript关闭withJa赋值运算符

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(PARAM =隐藏,隐藏= mystery2,因此参数(6)...) –

+0

做什么你的意思是“即使乘数没有指定”?它*在*参数(6)中被定义为'6'。 – str

+0

啊,所以参数(6)=隐藏(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);