我对功能和数组有疑问。当我在索引1中传递值3时,得到的结果为0,并且在索引3处传递值为4时相同。但是,我在执行时得到的答案是22.我不是&#39不明白为什么?任何人都可以解释我错过了什么。
var puzzlers = [
function ( a ) { return 8*a - 10; },
function ( a ) { return (a-3) * (a-3) * (a-3); },
function ( a ) { return a * a + 4; },
function ( a ) { return a % 5; }
];
alert(puzzlers[puzzlers[1](3)](puzzlers[3](9) ) );
答案 0 :(得分:1)
你得到了正确的结果:
alert(puzzlers[puzzlers[1](3)](puzzlers[3](9)));
puzzlers[3](9)
评估为4
,puzzlers[1](3)
评估为0
。因此,最终结果为puzzlers[0](4)
8*4 - 10
,即22
。
答案 1 :(得分:0)
代码(和答案)正在做正确的事情。你需要从最内层开始分解正在发生的事情。所以,问你的问题:
alert(puzzlers[puzzlers[1](3)](puzzlers[3](9) ) );
看看:
// puzzlers[3](9) is 4
alert(puzzlers[puzzlers[1](3)](4) );
然后看看:
// puzzlers[1](3) is 0
alert(puzzlers[0](4));
解决方案是:
alert(4*8 - 10);
哪个是对的。
答案 2 :(得分:0)
你能告诉我们你为什么会得到错误的结果吗?你的预期答案是什么? 你问的问题显示22(如PM 77-1所说)。