我对函数和数组有疑问。当我在索引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/