【问题标题】:Why is chrome giving me a TypeError when finding largest number in array?为什么在数组中查找最大数字时 chrome 会给我一个 TypeError?
【发布时间】:2018-05-07 18:57:25
【问题描述】:

我有以下代码来查找数组中的最大数:

function max(input) {
 var maxNum = 0;
 for(var i = 0; i <= input.length; i++) {
     if(maxNum < input[i]) {
         maxNum = input[i];
        }
    }
    return maxNum;
}
max([1, 2, 3, 7]);

当我在 Google Chrome、Edge 或 Firefox 中运行它时,我得到:

max.js:20 Uncaught TypeError: Cannot read property 'length' of undefined
    at max (max.js:20)
    at <anonymous>:1:1

但是当我在 pythontutor 上运行 JavaScript 时,我得到了正确的结果,没有任何语法错误。

【问题讨论】:

  • 我将其复制并粘贴到我的 chrome 控制台中,然后将 7 无误地返回给我。
  • Chromium Version 65.0.3325.181 没有错误!
  • 您可能正在调用 max,但代码/控制台中的其他地方没有任何参数。
  • 另外检查应该是i &lt; input.length 而不是i &lt;= input.length
  • 您的解决方案无法通过我过去提供的面试测试。 max([-1, -2]);

标签: javascript arrays function for-loop google-chrome-devtools


【解决方案1】:

这种类型的错误非常明确

它说它无法计算未定义属性的长度。

如果你仔细观察,你的迭代是这样的:

for(var i = 0; i <= input.length; i++) {

您传递了一个包含 4 个元素的数组,但索引从 0 到 3 input.length 为您提供了数组的大小为 4,所以当您如果失败,请为最后一个元素执行 input.length

取出等号:

for(var i = 0; i < input.length; i++) {

希望对你有帮助!

【讨论】:

  • 这仍然没有回答问题。
  • 这根本不是真的。
猜你喜欢
  • 2019-09-28
  • 2023-03-28
  • 1970-01-01
  • 2022-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多