我对函数和数组有疑问。当我在索引1中传递3的值时,我们得到的结果是0,而在索引3中传递4的值则相同。但是,执行时我得到的答案是22。我不明白为什么?谁能解释我错过的事情。

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) ) );

最佳答案

代码(和答案)在做正确的事情。您需要从最内部开始,将正在发生的事情分解为多个步骤。因此,关于您的问题:

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);


哪个是对的。

关于javascript - 执行时得到错误的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27664435/

10-09 23:09