Js函数参数(数字列表中的最高值)

时间:2016-03-20 04:44:03

标签: javascript

<html>
<head>
</head>
<body>
<p id="test"> </p>
<script>

function numbers() {
  var qwe,
  zxc = - Infinity;
  // arguments.length == 4 , right?
  for (qwe = 0; qwe < arguments.length; qwe++) {        
    if (arguments[qwe] > zxc) {
      // If arguments[qwe] which is equalto11isgreaterthan - Infinity--TRUE, right ?
      zxc = arguments[qwe]; // why does the output become 25 ?
    }
  }
  return zxc; // is it because of this ?
}
document.getElementById('test').innerHTML = numbers(13, 10, 25, 11);

</script>
</body>
</html>

为什么输出变为25?

2 个答案:

答案 0 :(得分:2)

Arguments.length确实等于4,因为你已经发送了4个参数(13,10,25,11)。你的for循环迭代4个参数,然后找到参数[qwe]。让我们分解一下:

  1. 第一次通过for循环,qwe = 0和zxc = - Infinity,因此if语句被评估为true(arguments [0] = 13,并且13&gt; - Infinity)。因为if语句被评估为true,所以我们现在评估if语句内部的逻辑,所以zxc现在设置为等于arguments [0],即13。
  2. 通过for循环的下一轮,qwe现在是1,zxc仍然是13,参数[qwe] = 10(下一个参数)。现在,参数[qwe] = 10,它不大于zxc(13),因此if语句为false,并且不计算if语句中的逻辑。
  3. 在for循环的下一次迭代中,qwe = 2,zxc仍为13,参数[qwe] = 25(下一次迭代)。现在,参数[qwe] = 25大于zxc(13),因此if语句为true。因为if语句被评估为true,所以我们评估if语句中的逻辑,并且zxc现在设置为相等的参数[2],即25。
  4. 对于for循环的下一次和最后一次迭代,qwe = 3,arguments [qwe] = 11,zxc = 25.因为参数[qwe] = 11,不大于25,if语句的计算结果为false并且不评估if语句中的逻辑。
  5. 此时,qwe =参数长度,因此for循环结束。一旦for循环结束,我们返回zxc,此时为25。

答案 1 :(得分:0)

使用此循环返回的内容是作为函数参数传递的最大数字。查看您作为参数传递的数字:13, 10, 25, 11

你的循环正在通过这些传递的整数并进行比较。将第一个索引(在这种情况下为13)与负无穷大进行比较。因为它更大,所以zxc变量被重写(每当当前索引大于前一个索引时会发生这种情况)。在您的情况下,25是参数列表中的最大整数,它是从函数返回的最终值。

要测试它,请将11更改为29并查看会发生什么。 25不再是最大的数字,也不会写入#test元素。