2014-12-27 7 views
0

У меня есть сомнения относительно функций и массивов. когда я передаю значение 3 в индексе 1, результат, который мы получаем, равен 0, и он одинаковый для передачи значения 4 в индексе 3. но ответ, который я получаю при выполнении, - 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))); 
+0

Ответ nash_ag правильный. Если вы так не думаете, возможно, вы рассматриваете 'puzzlers [1]', чтобы быть первым в своем массиве, которого нет. Диапазон индексов вашего массива равен [0-3]. – ulix

ответ

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

Который является правильным.

1

Вы получаете правильный результат:

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

puzzlers[3](9) оценивает в 4 и puzzlers[1](3) оценивает в 0. Таким образом, конечным результатом будет puzzlers[0](4), который равен 8*4 - 10, то есть 22.

0

Не могли бы вы рассказать нам, почему вы получили неправильный результат? Каков был ваш ожидаемый ответ? Вопрос, который вы задали, отображает 22 (как сказал PM 77-1).

+0

Я сказал неправильный результат, потому что когда я оценил вручную, я сделал ошибку, которая была выяснена. – user3484925

Смежные вопросы