执行时得到错误的结果

时间:2014-12-27 04:46:34

标签: javascript arrays

我对功能和数组有疑问。当我在索引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) ) );

3 个答案:

答案 0 :(得分:1)

你得到了正确的结果:

alert(puzzlers[puzzlers[1](3)](puzzlers[3](9)));

puzzlers[3](9)评估为4puzzlers[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所说)。