【问题标题】:JavaScript findMax() example - Need an ExplanationJavaScript findMax() 示例 - 需要说明
【发布时间】:2017-07-21 22:20:29
【问题描述】:

我正在阅读关于 JavaScript 的 W3Schools 教程,我只是想知道这个 findMax() 函数:

function findMax() {
    var i;
    var max = -Infinity;
    for (i = 0, i < arguments.length; i++) {
        if (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}

我知道 'i' 是一个计数器,该函数一直运行到所有内容都已计数,并且计数增加 1。我不明白 - 如何创建 if 语句(arguments[i] > max ) ... 获取 findMax() 函数中的最大数字?为什么将 i 传递给 if 语句会返回最大数?

【问题讨论】:

  • 对于每个参数argument[i],您需要查看它是否大于先前已知的最大值max
  • 循环遍历传入函数的参数,arguments[i] 是当前参数。如果它超过了当前存储在 max 中的值,则使用该数字更新 max,因此当循环完成时,max 是迭代过的最大数字。
  • 考虑在for 循环的每次迭代之后打印出maxarguments[i] 的值,你就会明白它为什么会起作用。

标签: javascript function


【解决方案1】:

在特定的代码行中,循环使用参数数组检查每个值,看它是否高于max 中保存的当前最高值。如果不是,则继续进行下一个。如果是,则将max 更改为新的最高值。一旦循环检查了 arguments 数组中的每个值,函数就会返回最大值 (max)。

【讨论】:

    【解决方案2】:

    if 语句不直接查看 i 的值。相反,它被用作数组arguments中特定值的索引。
    每次您发现一个高于您已经看到的所有值的值时,这意味着这是新的最大值。

    【讨论】:

      【解决方案3】:

      您似乎认为max 正在与i 进行比较。事实并非如此。 i 用于循环遍历 arguments 的元素。

      假设您像这样调用findMax findMax(1, 2, 3, 4, 5)。那么arguments 等于[1, 2, 3, 4, 5]

      然后发生的事情是您的 for 循环将遍历 arguments 的每个元素。

      • if (arguments[0] &gt; max) 与 Is 1 > -Infinity 相同吗? (是)
      • if (arguments[1] &gt; max) 与 Is 2 > 1 相同吗? (是)
      • if (arguments[2] &gt; max) 和 Is 3 > 2 一样吗? (是)
      • if (arguments[3] &gt; max) 与 Is 4 > 3 相同吗? (是)
      • if (arguments[4] &gt; max) 与 Is 5 > 4 相同吗? (是)

      这给你 5 作为最大值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-08
        相关资源
        最近更新 更多