1
  function A(a, b) {
     return a[b] * b;
   }
  function B(a) {

     var x = 0;
     for (var i=5; i>0; i--)
     x += A(a, i);

     return x;
  }
      var aValues = [3,5,9,8,7,1];
      var y = B(aValues);

答案会是: B(1) B(3) B(5) B(7) B(8) B(9) 吗?我迷失在正确的方向上的任何推动将不胜感激。

4

1 回答 1

3

执行后 y 为 80。完整的数组被传递给B(). 中的循环B()迭代aValues. Javascript 中的数组从索引 0 开始,因此循环i=5; i>0; i--永远不会触及索引为 0 的数组元素

函数a()然后将当前项与当前索引相乘并返回结果(与 x 相加)

因此,对于您获得的每个循环索引:

i=5 -> x += 1 * 5
i=4 -> x += 7 * 4
i=3 -> x += 8 * 3
i=2 -> x += 9 * 2
i=1 -> x += 5 * 1

所以在循环之后 x 包含返回并分配给 y 的值 80

于 2012-12-15T20:39:56.687 回答